有没有办法通过编程将我的iPhone应用程序发送到后台?

15

我有一个需要自动发送到后台的iPhone应用程序。该应用程序在其后台模式中使用VOIP关键字定义,因此在后台运行时应该继续运行。 我需要该应用程序保持运行状态,因此调用exit(0)无效。

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

我已经了解了UIApplication terminate和UIApplication terminateWithSuccess,但它们似乎不再可用。


1
为什么要将应用程序发送到后台???用户启动应用程序,然后将应用程序发送到后台。没有必要自己将应用程序发送到后台。此外,将“VOIP”键添加到后台模式中将使应用程序在后台运行,并在设备重置时启动。 - rckoenes
不可能的,您的要求与iOS系统不兼容。只有用户可以通过按下主屏幕按钮来将应用程序置于后台或关闭它。 - rckoenes
我有一种感觉,那就是情况如此 - 只是想知道是否有一个我可以使用的私有方法。 - gheese
可能有这样的方法,但是你肯定无法在应用商店中获取该应用程序。而且我也不知道这样的方法。 - rckoenes
谢谢 - 分发将通过企业方式进行,因此不需要提交应用商店。 - gheese
显示剩余3条评论
3个回答

14

已经在这里得到了非常好的答案:

挂起应用程序

正如那篇帖子中所写:

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

不要通过编程方式退出应用程序

永远不要通过编程的方式退出 iOS 应用程序,因为人们往往会将其解读为崩溃。然而,如果外部情况阻止您的应用程序按预期运行,您需要告知用户该情况,并解释他们可以采取什么措施。根据应用程序故障的严重程度,您有两个选择。

显示一个漂亮的屏幕,描述问题并建议纠正措施。 屏幕提供反馈,向用户保证您的应用程序没有任何问题。它让用户掌控局面,让他们决定是否希望采取纠正措施并继续使用您的应用程序,或者按 Home 按钮打开另一个应用程序

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


谢谢 - 我已经调查了挂起的路线,并发现它不适用,因为它只是将应用程序置于挂起状态,我需要一些后台处理来继续。无论如何,这只是确认它是不可能的。 - gheese

10
在Swift 3中使用以下代码,非常好用。
  DispatchQueue.main.asyncAfter(deadline: .now()) {
          UIApplication.shared.perform(#selector(NSXPCConnection.suspend))
      }

2
这个能通过应用审核流程吗? - Isuru
我在以下应用程序中看到了这个例子: https://apps.apple.com/ee/app/uzmi-ra%C4%8Dun-i-pobedi/id6444217874我的猜测是-苹果没有测试按钮。 但是,在主屏幕上有一个“取消按钮”,可以暂停应用程序,我相信使用上面的代码。 - Nebojsa Nadj

3

虽然我同意其他答案的观点,即您不应该通过编程方式退出程序。但是有一种方法可以通过编程方式退出程序。

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

exit(0);

如果没有按home键,就没有办法将应用程序置于后台。如果有的话,您可能需要在问题中添加越狱标志并询问他们。

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


谢谢确认,我已经怀疑在代码中无法将应用程序置于后台。 - gheese

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接