11

我有一个需要自动发送到后台的 iPhone 应用程序。该应用程序在其后台模式中使用 VOIP 键定义,因此它应在后台继续运行。我特别需要该应用程序继续运行,因此调用 exit(0) 不好。

该应用程序不会通过应用程序商店分发,因此可以使用私有 API。

我已阅读有关 UIApplication terminate 和 UIApplication terminateWithSuccess 的信息,但它们似乎不再可用

4

3 回答 3

10

已经在这里回答得很好:

暂停申请

正如那张海报所写:

退出您的应用程序或以编程方式将其发送到后台是违反 [iOS 人机界面指南][1] 的,这对于通过审核过程通常不是好兆头:

不要以编程方式退出

永远不要以编程方式退出 iOS 应用程序,因为人们倾向于将其解释为崩溃。但是,如果外部环境阻止您的应用程序按预期运行,您需要告诉您的用户这种情况并解释他们可以做些什么。根据应用程序故障的严重程度,您有两种选择。

显示一个有吸引力的屏幕,描述问题并提出更正建议。屏幕提供反馈,让用户确信您的应用程序没有问题。它使用户处于控制之中,让他们决定是否要采取纠正措施并继续使用您的应用程序,或者按下主页按钮并打开另一个应用程序

如果您的应用程序的某些功能无法正常工作,请在人们激活该功能时显示屏幕或警报。仅当人们尝试访问不起作用的功能时才显示警报。

于 2012-12-21T14:17:56.100 回答
7

在 Swift 3 中使用下面的代码,工作魅力

  DispatchQueue.main.asyncAfter(deadline: .now()) {
          UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
      }
于 2017-10-06T13:02:48.107 回答
3

虽然我同意您“不应该”以编程方式退出的另一个答案。有一种以编程方式退出的方法。

*免责声明 - 你不应该这样做。

exit(0);

如果不按主页按钮,就无法将应用程序置于后台。如果有,您可能希望将越狱标志添加到您的问题中并询问他们。

有关更多信息,请检查此重复问题,退出应用程序的正确方法

于 2012-12-21T14:26:05.870 回答