在IOS上使用launchd重启app

我正在博物馆展览中使用一些iPad,运行由他人开发的应用程序.尽管我们已经覆盖了主页按钮,但我发现应用程序偶尔崩溃,使用户处于主屏幕.从这里他们可以访问其他未经授权的应用

博物馆不反对越狱iPad,如果这将为我们提供我们需要的解决方案,所以我一直在研究使用带有KeepAlive标签的launchd并将.plist文件放入/ Library / LaunchAgents目录的想法如果崩溃,请阻止应用关闭或重新生成它

到目前为止,我已经成功地使用iPad附带的默认应用程序以及Cydia安装的应用程序,但我无法让它重新启动我们想要的应用程序.我已经从/ User / Applications目录和/ Applications中尝试过它,有人建议可能会有所作为,但没有乐趣.有人可以建议一个可能的解决方案,还是我在浪费时间?我从下面的plist文件中插入了XML.

   <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.MVFieldguide.launchd</string>
<key>ProgramArguments</key>
    <array>
    <string>/Applications/Field Guide 2010.app/Field Guide 2010</string>
    </array>

<key>RunAtLoad</key>
    <true/>

<key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <true/>
    </dict>

最佳答案 这不起作用,因为App Store应用程序不保存在Applications文件夹中.我可以想到两个选择.

>在Cydia中安装AppLinks.这将创建每个App Store应用程序的符号链接,并将它们放在/ var / mobile / AppLinks中.然后在plist文件中将应用程序的路径设置为

/ var / mobile / AppLinks / Field Guide 2010 / Field Guide 2010
>不是按照常规方式将应用程序安装到iPad上,您可以从Xcode获取ipa并提取.app包.然后手动将其安装到/ Applications /中,您就可以按照自己的方式使用launchd plist.

我推荐第一个选项,因为它允许您更新应用程序而无需手动将.app包放入Applications文件夹.使用第一个选项将不会更改您更新应用程序的工作流程.

此外,请注意,如果您这样做,您必须在更新应用程序之前删除plist以退出它,因为我认为您不能在应用程序运行时更新它.

点赞