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

And*_*rew 1 ios background-task

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

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

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

Rob*_*Rob 7

多年来,我们\xe2\x80\x99t 一直没有使用旧的 10 分钟窗口,因此它不再适用。在 OS 7 中减少到 3 分钟,在 iOS 13 中进一步减少到 30 秒。(有一个新的后台任务概念,用于运行超过 30 秒的任务,但操作系统将自行决定运行这些任务,例如,在晚上,当用户为其设备充电时,因此\xe2\x80\x99s 在这里并不真正适用)。

\n\n

对您问题的简短回答是,您无法将无限期在后台运行的应用程序提交到商店,除非它\xe2\x80\x99s是非常有限的允许后台模式列表之一。

\n\n

如果您可以转到目标的 \xe2\x80\x9cSigning & Capability\xe2\x80\x9d 选项卡并添加 \xe2\x80\x9cBackground Modes\xe2\x80\x9d,您可以看到替代列表:

\n\n

在此输入图像描述

\n\n

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

\n\n
    \n
  1. \xe2\x80\x9c外部配件通信\xe2\x80\x9d后台模式(请参阅ExternalAccessory)似乎很有前途,但\xe2\x80\x99s仅适用于蓝牙或有线连接。因此,除非您可以重构/重新设计设备的通信方式,否则这可能不是一个可行的解决方案。

  2. \n
  3. \xe2\x80\x99s 一个有趣的问题是,仅让应用程序在前台运行是否会有所帮助(例如,明智地使用idleTimerDisabled)。我知道这解决了一个不同的问题(并且应该仅在必要时使用),但也许它\xe2\x80\x99s 适合你的选项。

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

  6. \n
\n\n

最重要的是,您可以\xe2\x80\x99t 执行您所要求的操作,但如果您编辑问题时提供有关设备性质以及您的 iOS 应用程序想要对该设备执行哪些操作的更多详细信息,我们也许能够提供更好的法律顾问。但在回答一般问题 \xe2\x80\x9ccan 我只是让应用程序在后台永久运行 \xe2\x80\x9d 时,答案是 \xe2\x80\x9cno。\xe2\x80\x9d

\n