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

Posted

技术标签:

【中文标题】如何让你的 iOS 应用在后台运行超过 3 分钟?【英文标题】:How to get your iOS app to run in the background for longer than 3 minutes? 【发布时间】:2019-11-20 17:43:55 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

我们已经多年没有旧的 10 分钟窗口,因此它不再适用。在 OS 7 中缩短为 3 分钟,在 iOS 13 中进一步缩短为 30 秒。(有一个新概念 background tasks,用于运行超过 30 秒的任务,但操作系统将自行决定运行这些任务,例如在晚上,当用户正在为他们的设备充电时,所以这在这里并不适用)。

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

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

因此,请注意,您不能完全按照您的要求进行操作,以下是一些观察结果:

    “外部附件通信”后台模式(请参阅ExternalAccessory)看起来很有希望,但这仅适用于蓝牙或有线连接。因此,除非您可以重构/重新设计设备的通信方式,否则这可能不是一个可行的解决方案。

    有一个有趣的问题,就是让应用程序在前台运行是否会有所帮助(例如,明智地使用 idleTimerDisabled)。我知道这解决了一个不同的问题(并且应该只在必要时使用),但也许它是你的选择。

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

归根结底,您不能按您的要求做,但是如果您编辑您的问题,并提供有关设备性质以及您的 iOS 应用希望对该设备做什么的更多详细信息,我们或许能够提供更好的建议.但在回答“我可以让应用程序在后台永久运行”这个一般性问题时,答案是“不”。

【讨论】:

好,详细的回答 很好的答案,谢谢@Rob。在前台运行将不起作用,因为我们正在尝试解决锁定屏幕并将手机放在口袋里的情况。我尝试了连续的长轮询 HTTP 请求,但我无法让它工作,我不确定它是否会工作,所以我不确定我是否应该继续沿着这条路线走。跨度>

以上是关于如何让你的 iOS 应用在后台运行超过 3 分钟?的主要内容,如果未能解决你的问题,请参考以下文章

使计时器在后台 iOS 上运行 3 分钟以上

如何让我的应用程序超过 10 分钟。在后台?

防止iOS在几分钟后杀死App

iOS保持线程在后台运行

ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案

ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方式