当移动应用程序处于后台时,Websockets消息传递



我正在尝试使用Pusher或PubNub(websockets)实现iOS聊天应用程序。

问题:当iOS应用程序处于后台时,消息传递是如何工作的

我知道Websockets实现提供实时消息传递,并且不缓存消息应用程序在后台时,套接字连接断开,消息是否丢失

如果是,如何恢复丢失的邮件?一个想法是在每次应用程序出现在前台时实现一个状态刷新协议。

PubNub丢失消息恢复选项

你提到了PubNub(我工作的公司),正如@FrankG所提到的,除非你获得苹果公司的许可,可以在后台运行你的应用程序(保持与互联网的连接,因此也就是PubNub),否则你不会实时收到任何消息。

当您的应用程序处于后台(但空闲/未运行)或完全未运行(终止状态)时,您可以使用PubNub的移动推送网关接收APNS推送消息。

当应用程序再次激活时,PubNub可以配置为自动从其订阅的频道检索错过的消息,但这对短时间断开连接很好。

对于较长时间的脱机,您可以启用Storage&播放并使用historyForChannel API获取所需所有频道的所有遗漏消息。

答案:没有。

如果iOS应用程序在后台,那你就倒霉了。当应用程序处于后台时,没有官方(也是苹果批准的)保持连接打开的方式。有一些技巧,比如播放无声音轨,让它保持在前台,但苹果不赞成这样的技巧。你需要使用APNS发送离线消息,将应用程序带到前台,以便重新连接。

WS标准不涉及缓存,这一点您是100%正确的。这必须由体系结构中的另一个子系统来执行。

Kaazing网关(披露:我工作的公司)在我们的消息网关中有一个功能,可以缓存最后发送的值。当客户端重新连接(我们的客户端libs自动重新连接)时,他们将看到该值。

最新更新