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