我有一个需要自动发送到后台的iPhone应用程序。该应用程序在其后台模式中使用VOIP关键字定义,因此在后台运行时应该继续运行。 我需要该应用程序保持运行状态,因此调用exit(0)无效。
该应用程序不会通过应用商店分发,因此使用私有API是可以的。
我已经了解了UIApplication terminate和UIApplication terminateWithSuccess,但它们似乎不再可用。
我有一个需要自动发送到后台的iPhone应用程序。该应用程序在其后台模式中使用VOIP关键字定义,因此在后台运行时应该继续运行。 我需要该应用程序保持运行状态,因此调用exit(0)无效。
该应用程序不会通过应用商店分发,因此使用私有API是可以的。
我已经了解了UIApplication terminate和UIApplication terminateWithSuccess,但它们似乎不再可用。
已经在这里得到了非常好的答案:
正如那篇帖子中所写:
通过编程的方式退出您的应用程序或将其发送到后台是违反 [iOS 人机界面指南][1] 的,这通常不利于通过审核过程:
不要通过编程方式退出应用程序
永远不要通过编程的方式退出 iOS 应用程序,因为人们往往会将其解读为崩溃。然而,如果外部情况阻止您的应用程序按预期运行,您需要告知用户该情况,并解释他们可以采取什么措施。根据应用程序故障的严重程度,您有两个选择。
显示一个漂亮的屏幕,描述问题并建议纠正措施。 屏幕提供反馈,向用户保证您的应用程序没有任何问题。它让用户掌控局面,让他们决定是否希望采取纠正措施并继续使用您的应用程序,或者按 Home 按钮打开另一个应用程序
如果您的应用程序的某些功能不工作,请在人们激活该功能时显示屏幕或警报。 仅在人们尝试访问未正常运行的功能时才显示警报。
DispatchQueue.main.asyncAfter(deadline: .now()) {
UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
}
虽然我同意其他答案的观点,即您不应该通过编程方式退出程序。但是有一种方法可以通过编程方式退出程序。
*免责声明- 您不应该这样做。
exit(0);
如果没有按home键,就没有办法将应用程序置于后台。如果有的话,您可能需要在问题中添加越狱标志并询问他们。
更多信息,请查看此重复问题:正确退出应用程序的方法。