【问题标题】:XMPP ejabberd SaaS Push NotificationsXMPP ejabberd SaaS 推送通知
【发布时间】:2016-05-05 12:45:13
【问题描述】:

这是对我之前的问题XMPP push notifications causing problems的更新。

感谢 Mickaël Rémond 的回答,延迟和重复问题已经解决,但我仍然无法理解推送通知的行为。

  1. 如果我将应用程序移至后台(不锁定设备或终止),它将不会收到任何推送通知,而当我将其移回前台时,所有消息都会完美接收。

    李>
  2. 当应用程序处于前台并且我锁定设备时,不会触发任何通知,但可以完美接收消息。

  3. 当应用程序在后台并且我锁定设备时,会触发通知,完美接收消息但有时发送sendLastActivityQueryToJID后会收到消息。

我不知道这里发生了什么,但如果你们有任何想法,请告诉我。
PS 我已经从我的应用程序中删除了背景模式。

【问题讨论】:

    标签: ios xmpp apple-push-notifications ejabberd ejabberd-saas


    【解决方案1】:

    它似乎与 ejabberd 没有任何关系,但似乎与推送通知在 iOS 上的工作方式有关。

    我不完全确定您要做什么,但您不应该为您的应用移除后台模式。允许应用在后台模式下运行一小段时间以执行适当的管家任务,这没有必要,而且还有许多其他好处。

    1. 后台应用程序通常运行三分钟后被杀死。这意味着在此期间您会​​在应用程序内收到正常的 XMPP 消息。您必须在该状态下并在收到 XMPP 消息时从 appm 触发本地通知。

    2. 当应用程序处于前台时,iOS 将永远不会显示任何通知。这是意料之中的。如果您连接到 XMPP 服务器,您将收到 XMPP 消息。如果未连接,您将收到通知,但不会显示。您可以在您的应用中对它们进行操作。

    3. 您的问题有些困惑:如果您的应用程序在后台,则会触发通知,但只有在您重新打开/重新附加到会话或重新连接时才应同时收到消息。 如果您需要一些流量来接收消息,那是因为您没有进行空格保持活动。如果你不这样做,服务器会认为你突然失去了连接,并开始发送推送通知和缓冲消息。确保按照文档中的建议实施空格保持活动,否则无法正常工作。

    【讨论】:

    • 我已经正确处理了本地(启用后台模式)和推送通知的所有内容。问题是/是会话重新绑定。我正在做正确的空白保持活动。如果流断开连接,我发送超时连接但它正在创建一个新会话并通过在接收流功能后发送重新绑定节来重新建立会话 Session not found
    • 您可能使用了错误的会话 ID。您需要始终将一个存储在上一个会话期间收到的最后一个打开的流中,而不是接收到的第一个。
    • 这里是用户连接流日志pastebin.com/vd9XCtcc。连接或身份验证后我应该存储哪个会话?我应该在连接或身份验证后何时发送重新绑定节?我已经尝试了一切,但仍然没有运气。谢谢
    • 正如我所说,如果接收,您需要使用最后一个流。始终存储并重新发送最后一个流 id,你会没事的。
    • 在日志中有两个ids。一个在连接后,一个在身份验证后。我应该在连接后发送rebind 节对吗?
    猜你喜欢
    • 2013-04-17
    • 2015-05-26
    • 2011-04-05
    • 2017-03-26
    • 2020-03-13
    • 2013-05-28
    • 2016-02-28
    • 2018-07-24
    相关资源
    最近更新 更多