观察WhatsApp和类似的聊天应用时,我可以看到以下行为:
我每次尝试都可以重现这种情况。
现在我正在开发自己的iPhone应用程序,我似乎无法弄清楚如何实现这种行为。据我所知,这可以通过几种方式实现:
使用APNS的QoS功能
我读到如果消息没有传送到设备,QoS会存储消息,并在设备重新连接时再次发送消息。然而,这个解决方案没有意义,原因有两个:
据说QoS一次只能保存一个未传递的消息。但就我而言,我收到了不止一条消息。
当我打开互联网连接时,消息会立即显示,而QoS文档说可能需要一些时间来获取未传递的消息。
使用后台服务或收听连接更改
关于后台服务,我知道与正在运行的后台服务最接近的是后台提取,但它似乎不适合这里,因为它是定期的。
而且我也无法找到任何可以连接的回调,知道我在后台时连接发生了什么变化,并执行了一些操作。
您是否知道如何为iPhone应用程序实现此功能? (QoS?其他背景API?)