【问题标题】:How does whatsapp Keeps its eJabberd/XMPP server connected when the app is Closed?当应用程序关闭时,whatsapp 如何保持其 eJabberd/XMPP 服务器连接?
【发布时间】:2015-09-09 14:29:11
【问题描述】:

当应用程序完全关闭时,Whatsapp 如何保持与套接字的连接。

Whatsapp 是否使用 GCM 或 APNS 推送来触发应用与 Ejabberd 同步?有人说它总是保持连接(我对此很陌生)但我测试我重新启动手机,清除内存,AppManager 强制关闭 Whatsapp,它仍然收到消息。所以想知道你能否让代码在操作系统级别运行以在一切关闭时保持连接?还是只使用 GCM 作为触发器?

当没有应用在后台运行时,手机唯一的连接不是 Android GCM 吗?

我很困惑,如果Whatsapp确实使用XMPP协议,那么App在完全关闭时如何保持与服务器的连接?

我进一步研究,发现 Pubnub 正在运行与 TCP 或 XMPP 协议类似的东西,并且可以在应用程序在后台时研究消息......但不是 IOS。 http://www.pubnub.com/knowledge-base/discussion/381/can-my-ios-app-receive-messages-while-inactive

它需要 APNS 推送首先唤醒应用程序,然后重新建立连接。但是Whatsapp呢?看起来像 Appstore 合规性问题?但是AppStore允许许多应用程序在后台运行,但它不允许Pubnub或有连接的应用程序在后台保持活动状态吗?

【问题讨论】:

  • 您好,谢谢,我看了一下,但是当您将其作为服务保留时,它只是在后台运行,对吗?但是当我在玩 Whatsapp 时,我试图从应用程序管理器中将其关闭,然后清除 ram,它仍然会立即收到消息。
  • 嗨。我想你要求的是不同的东西。对于 iOS,应用程序通过 APNS 接收推送通知。如果您已停用应用程序后台刷新(直到最近才存在),通知仍然会到达。当您打开应用程序时,whatsapp 会要求您提供新数据。
  • 啊,好的,谢谢,所以 APNS“有点”触发 XMPP 连接同步,在 whatsapp 案例中是 eJabberd
  • Whatsapp 无法保持连接,会话在其服务器上暂停,当用户再次打开应用程序时会话恢复

标签: android ios xmpp appstore-approval ejabberd


【解决方案1】:

要在 iOS 上构建聊天应用程序,无论如何您都会在几分钟后断开连接。您要做的就是依靠 Apple Push Notification 服务让用户知道收到了新消息。

这意味着您必须确保对 ejabberd 进行了修改,以便能够利用推送通知服务,而不仅仅是依靠 XMPP 连接来告知用户新消息。

【讨论】:

    猜你喜欢
    • 2018-02-12
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多