我知道这样做的唯一方法并不理想,但它确实有效。
首先,您的应用必须选择退出后台执行(多任务处理)应用程序必须在退出时退出,而不是作为后台任务运行。这是使用plist键UIApplicationExitsOnSuspend完成的。
其次,您的应用需要注册可用于启动应用的自定义URL方案。
第三,你需要一个托管的网页,当加载时会重定向到你应用的自定义URL方案。
第四,用户需要有效的Internet连接。
要退出并重新启动,请在托管重定向网页上调用UIApplication openURL。您的应用将退出,Safari将启动并加载您的页面。该页面将Safari重定向到您的自定义URL方案,提示Safari在内部调用openURL,从而导致iOS启动您的应用程序。
你链接到的帖子是指Cocoa应用程序,而不是iOS。在iOS上,您可以使用exit(0);
退出应用程序(但Apple不喜欢这样),但我不建议这样做。但是你无法重启iPhone应用程序。
除非您正在为越狱设备开发,否则Apple甚至不允许您以编程方式终止您的应用。因此重新启动设备是不可能的。
你的AppDelegate
实例有一个方法
(void)applicationDidBecomeActive:(UIApplication *)application
{
}
在这里,您可以使用逻辑来确定应用程序是否应该重新启动,或者继续执行它正在执行的操作。例如,你可以拥有一个BOOL
变量appMustRestart
,它最初是false
,但是当你的应用程序中发生了一些你想在下次重新启动时发生的事情时,它会被触发为真。
if (appMustRestart)
{
[self resetVars]; // call a method that resets all your vars to initial settings
// INSERT CODE HERE TO TRANSFER FOCUS TO INITIAL VIEWCONTROLLER
}