如何让您的 iOS 应用程序在后台 运行 超过 3 分钟?

How to get your iOS app to run in the background for longer than 3 minutes?

似乎旧版本的 iOS 允许您的应用程序在后台 运行 10 分钟。现在似乎 iOS 只允许您的应用 运行 最多 3 分钟。我没有找到任何文档提及此更改的时间或版本,或者 Apple 提供的任何估计您的应用程序可以在后台运行 运行 的时间。

我需要能够在后台 运行,因为我的应用程序通过 TCP 连接到外部设备。我已经知道您可以使用 VOIP 和播放无声音频进行黑客攻击(两者都会让您的应用程序被拒绝)。

我可以做些什么来让我的应用程序在后台保持 运行ning 超过 3 分钟?

多年来我们都没有过旧的 10 分钟 window,所以这根本不再适用。在 OS 7 中减少到 3 分钟,在 iOS 13 中进一步减少到 30 秒。(有一个新概念 background tasks,因为 运行ning 任务更长超过 30 秒,但 OS 会 运行 自行决定这些,例如在晚上,当用户正在为他们的设备充电时,所以这在这里并不适用)。

对您的问题的简短回答是,您不能无限期地向 运行 在后台运行的应用商店提交应用,除非它是非常有限的允许后台模式列表之一。

如果您可以转到目标的“签名和功能”选项卡并添加“后台模式”,您可以看到备选方案列表:

所以,请注意您不能完全按照您的要求进行操作,这里有一些观察结果:

  1. “外部附件通信”后台模式(参见ExternalAccessory)似乎很有前途,但这仅适用于蓝牙或有线连接。因此,除非您可以 refactor/reengineer 您的设备如何通信,否则这可能不是一个可行的解决方案。

  2. 有一个有趣的问题,即仅将应用 运行ning 保持在前台是否有帮助(例如,明智地使用 idleTimerDisabled)。我知道这解决了一个不同的问题(并且应该只在必要时使用),但也许它是你的选择。

  3. 如果您的外部设备支持 Internet,并且您希望它通知应用某些事件,也许您可​​以让它将其意图传达给某些 Web 服务,然后触发 APNS 推送通知您的设备可以接收。

最重要的是,您不能按照您的要求进行操作,但如果您使用有关设备性质的更多详细信息以及您的 iOS 应用程序希望对该设备执行的操作来编辑您的问题,我们可能能够提供更好的辅导。但在回答“我能不能让应用程序 运行ning 永远在后台运行”这个一般性问题时,答案是“不能”。