0

这是对我之前的问题XMPP 推送通知导致问题的更新。

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

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

于 2016-01-28T22:33:40.400 回答