XMPP ejabberd SaaS推送通知

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

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

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

  2. 当应用程序在前台,我locking设备,没有通知被触发,但消息收到完美。

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

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

这似乎与ejabberd没有任何关系,但似乎与推送通知如何在iOS上工作有关。

我不完全确定你要做什么,但不应该删除你的应用程序的背景模式。 没有必要,也有许多其他的好处,允许应用程序在后台运行一小会儿,做适当的内务工作。

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

  2. 当应用程序处于前台时,iOS将不会显示任何通知。 这是预料之中的。 如果在XMPP服务器上连接,则会收到XMPP消息。 如果没有连接,您将收到通知,但不会显示。 这取决于你在你的应用程序中与他们做些什么。

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