是否可以在后台实现不间断 API 端点 ping?

Is it possible to implement nonstop API endpoint pinging in background?

我们的团队决定在后台实现不间断 API 端点 ping,在收到所需的响应后,应用程序应显示 包含响应消息的通知 。我建议通过第三方服务使用通知,例如 Firebase 或 OneSignal,但目前我们宁愿使用不间断 API 端点 ping。

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

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

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

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

理由是这样做会使设备上的无线电接口保持开启状态并消耗大量电量。如果您可以在 Android 上实现它,它会遇到完全相同的问题。

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

可用的选项有:

后台应用刷新

Background App Refresh 适用于需要定期后台刷新内容的应用程序。

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

无法保证您会被唤醒或何时。在实践中,您可以期望的最多是每个 15m,但经常会有很长的间隔,这可能是由“请勿打扰”和用户行为驱动的。

URLSession

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

Apple 推送通知服务

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

同样,无法保证交付(间歇性连接)。实际上,iOS 需要定期唤醒并启动无线电接口才能接收它们 - 发生这种情况的方式和时间是一个块框。

中间件

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