我有一个需要自动发送到后台的 iPhone 应用程序。该应用程序在其后台模式中使用 VOIP 键定义,因此它应在后台继续运行。我特别需要该应用程序继续运行,因此调用 exit(0) 不好。
该应用程序不会通过应用程序商店分发,因此可以使用私有 API。
我已阅读有关 UIApplication terminate 和 UIApplication terminateWithSuccess 的信息,但它们似乎不再可用
我有一个需要自动发送到后台的 iPhone 应用程序。该应用程序在其后台模式中使用 VOIP 键定义,因此它应在后台继续运行。我特别需要该应用程序继续运行,因此调用 exit(0) 不好。
该应用程序不会通过应用程序商店分发,因此可以使用私有 API。
我已阅读有关 UIApplication terminate 和 UIApplication terminateWithSuccess 的信息,但它们似乎不再可用
已经在这里回答得很好:
正如那张海报所写:
退出您的应用程序或以编程方式将其发送到后台是违反 [iOS 人机界面指南][1] 的,这对于通过审核过程通常不是好兆头:
不要以编程方式退出
永远不要以编程方式退出 iOS 应用程序,因为人们倾向于将其解释为崩溃。但是,如果外部环境阻止您的应用程序按预期运行,您需要告诉您的用户这种情况并解释他们可以做些什么。根据应用程序故障的严重程度,您有两种选择。
显示一个有吸引力的屏幕,描述问题并提出更正建议。屏幕提供反馈,让用户确信您的应用程序没有问题。它使用户处于控制之中,让他们决定是否要采取纠正措施并继续使用您的应用程序,或者按下主页按钮并打开另一个应用程序
如果您的应用程序的某些功能无法正常工作,请在人们激活该功能时显示屏幕或警报。仅当人们尝试访问不起作用的功能时才显示警报。
在 Swift 3 中使用下面的代码,工作魅力
DispatchQueue.main.asyncAfter(deadline: .now()) {
UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
}
虽然我同意您“不应该”以编程方式退出的另一个答案。有一种以编程方式退出的方法。
*免责声明 - 你不应该这样做。
exit(0);
如果不按主页按钮,就无法将应用程序置于后台。如果有,您可能希望将越狱标志添加到您的问题中并询问他们。
有关更多信息,请检查此重复问题,退出应用程序的正确方法。