1

我们的团队决定在后台实现不间断的 API 端点 ping,在收到所需的响应后,应用程序应该显示一条通知,其中包含来自 response 的消息。我建议通过第三方服务(如 Firebase 或 OneSignal)使用通知,但目前我们更愿意使用不间断 API 端点 ping。

我查看了 IOS 的背景工作,发现与 Android 相比存在很多限制,例如请求的持续时间或类型。在任何版本的 Android 中都是 100% 可能的(有一些调整)。

这就是为什么我想知道这在 IOS 上是否完全可行,并且我们可能持续 2 小时的后台进程在任何情况下都不会被杀死?当然,除了重启 IOS 系统,我认为这不会恢复后台工作

此外,欢迎任何建议:) 保持坚强!

4

1 回答 1

1

您提出的建议在 iOS 上是不可能的。从一开始,应用程序就无法在打开套接字的情况下在后台运行。

理由是这样做会使设备上的无线电接口保持通电并消耗大量电力。如果您可以在 Android 上实现这一点,那么它也有完全相同的问题。

从问题中不清楚您要解决什么问题:只有您选择的实施方式。

可用的选项有:

后台程序刷新

后台应用刷新适用于需要定期后台刷新内容的应用。

15s当有足够的电池寿命和连接性来执行它需要采取的任何操作时, 您的应用会在短时间内被唤醒 (ISTR )。

无法保证会醒来或何时醒来。在实践中,你可以期待的最多的是 every 15m,但通常会有很长的差距,这可能是由请勿打扰和用户行为驱动的。

网址会话

URLSession可以移交给 iOS 以在后台发生 - 专门用于下载大型内容项目。

苹果推送通知服务

APNS可用于唤醒您的应用程序(或更可能是 AppExtension)。您需要定期发送通知。

同样,无法保证交付(间歇性连接)。实际上,iOS 需要定期唤醒并打开无线电接口以接收它们 - 如何以及何时发生这种情况是一个块盒。

中间件

Firebase 等中间件可能会结合使用上述技术和 Websockets 来实现同步。

于 2020-03-15T11:18:28.933 回答