我希望在KIOSK模式下运行一个应用程序,以便它:
- 在设备启动后自动启动
- 在应用程序崩溃/断电等情况下重新启动
最简单的方法是创建一个在SpringBoard中运行并且弹出自己的UIWindow
的mobilesubstrate扩展。
创建一个static __attribute__((constructor))
函数并在其中注册UIApplicationDidFinishLaunchingNotification
。收到通知后,标准的iPhone SDK 99%将按原样工作。
因为标准操作系统无法提供那种程度的控制,所以必须进行越狱。
既然你已经在考虑越狱,或许可以研究一下手机上的launchd,因为启动Springboard的任何内容也可能被设置为启动你的应用程序。
-dynamiclib
链接器标志编译您的项目,忽略codesign错误,并将编译后的二进制文件从build/.../MyExt.app/MyExt
移动到设备上的/Library/MobileSubstrate/DynamicLibraries/MyExt.dylib
。如果您只是创建自己的UIWindow
等,则标准SDK就足够了;如果您想与SpringBoard本身交互,则需要获取SpringBoard头文件(可以通过class-dump或其他来源获得)。 - rpetrich