如何以编程方式在 iOS 中重新启动 iPhone 应用程序?
我发现这种方式http://writeitstudios.com/david/?p=54
但可能是一些简单的事情。
我知道这样做的唯一方法并不理想,但它确实有效。
首先,您的应用程序必须选择退出后台执行(多任务) 应用程序必须在退出时退出,而不是作为后台任务运行。这是通过 plist 键 UIApplicationExitsOnSuspend 完成的。
其次,您的应用需要注册一个可用于启动应用的自定义 URL 方案。
第三,您需要一个托管在某处的网页,该网页在加载时会重定向到您应用的自定义 URL 方案。
第四,用户需要一个活跃的互联网连接。
要退出并重新启动,请在托管的重定向网页上调用 UIApplication openURL。您的应用程序将退出,Safari 将启动并加载您的页面。该页面会将 Safari 重定向到您的自定义 URL 方案,提示 Safari 在内部调用 openURL,从而导致 iOS 启动您的应用程序。
您链接到的我的帖子指的是 Cocoa 应用程序,而不是 iOS。在 iOS 上,您可以通过 using 退出应用程序(但 Apple 不喜欢这样),exit(0);
但我不建议这样做。但是,您无法重新启动 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
}