在观察 WhatsApp 和类似的聊天应用程序时,我可以看到以下行为:
- 关闭互联网连接(蜂窝和 WIFI)。
- 确保聊天应用程序未处于活动状态(在后台)。
- 向我的设备发送多条消息(通过其他设备)。
- 打开互联网。
- 在几秒钟内,所有消息都显示为通知。
我每次尝试都可以重现这种情况。
现在我正在开发自己的 iPhone 应用程序,但我似乎无法弄清楚如何实现这种行为。据我了解,这可以通过多种方式实现:
使用 APNS 的 QoS 功能:
我读到 QoS 会在消息未传递到设备时存储消息,并在设备重新连接时再次发送。但是,由于两个原因,此解决方案没有意义:
据说 QoS 一次只保存一条未传递的消息。但就我而言,我收到的信息不止一条。
当我打开互联网连接时,消息会立即显示,并且 QoS 文档说可能需要一些时间才能收到未传递的消息。
使用后台服务或监听连接变化:
关于后台服务,我知道最接近正在运行的后台服务的是 Background Fetch,但它似乎不适合这里,因为它是周期性的。
而且我也找不到任何可以连接的回调,以了解我在后台时连接何时发生变化,并执行一些操作。
您知道如何为 iPhone 应用程序实现此功能吗?(QoS?其他后台 API?)