5

如何以编程方式在 iOS 中重新启动 iPhone 应用程序?

我发现这种方式http://writeitstudios.com/david/?p=54

但可能是一些简单的事情。

4

4 回答 4

21

我知道这样做的唯一方法并不理想,但它确实有效。

首先,您的应用程序必须选择退出后台执行(多任务) 应用程序必须在退出时退出,而不是作为后台任务运行。这是通过 plist 键 UIApplicationExitsOnSuspend 完成的。

其次,您的应用需要注册一个可用于启动应用的自定义 URL 方案。

第三,您需要一个托管在某处的网页,该网页在加载时会重定向到您应用的自定义 URL 方案。

第四,用户需要一个活跃的互联网连接。

要退出并重新启动,请在托管的重定向网页上调用 UIApplication openURL。您的应用程序将退出,Safari 将启动并加载您的页面。该页面会将 Safari 重定向到您的自定义 URL 方案,提示 Safari 在内部调用 openURL,从而导致 iOS 启动您的应用程序。

于 2010-11-21T17:40:45.520 回答
1

您链接到的我的帖子指的是 Cocoa 应用程序,而不是 iOS。在 iOS 上,您可以通过 using 退出应用程序(但 Apple 不喜欢这样),exit(0);但我不建议这样做。但是,您无法重新启动 iPhone 应用程序。

于 2010-11-23T14:09:47.527 回答
0

除非您正在为越狱设备进行开发,否则 Apple 甚至不允许您以编程方式终止您的应用程序。所以重启设备是不可能的。

于 2010-11-21T17:22:20.183 回答
-1

您的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
}
于 2013-04-27T00:42:55.987 回答