我有一个使用openfire的ios聊天应用程序,我需要在以下情况下发送推送通知:(1)消息无法传递,无论什么原因;(2)应用程序处于挂起状态,即不能自行生成通知。
我已经阅读了stackoverflow和其他地方的大部分相关问题/建议,并得出了我的问题的几个解决方案。我不是ios开发人员,也不知道openfire或xmpp在几天前之前的任何事情,所以我担心我的理解可能不完整,我的解决方案可能存在缺陷。
请确认我的理解并建议是否遗漏了某些内容或是否有更好的方法。请还建议关于实现下面列出的特定解决方案有多复杂。这里的挑战是确定何时需要推送以及在哪里启动该过程。
一种方法是使用xmpp的xep-0184实现来检查消息是否已传递。为此,我们应该在ios数据库中的消息中具有某个已传递标志,当接收到传递的响应时,该标志会更新。因此,我们需要在一段时间后检查此标志,如果传递状态为false,则使用消息启动推送过程。看起来是一个复杂的解决方案(等待响应..稍后检查标志..不是很令人印象深刻)
更直接的方法是在openfire中做一些事情,当openfire无法传递消息时,它将其存储在离线表中,我们可以在该部分进行拦截,并使用消息启动推送过程。这似乎是正确的方法,但我真的很害怕深入openfire并更改某些内容(这可能也很容易,曾经稍微使用过openfire的人可以说吗?)
这是我的最后一招,这不是一个解决方案..但如果我不能在预期时间内(即从现在开始的一周内)正确地完成它,我们计划为所有消息发送推送通知。oppenfire将负责正常聊天,而我们的服务器将为每个消息发送推送,但当应用程序处于前台时,我们会执行某些操作以处理不需要显示的额外推送消息,否则每当有消息时就会收到推送。你们认为这种临时解决方案如何(当然,我们必须尽快更改这种情况),这可行吗(还是我在这里遗漏了什么)?
P.S. 有人能告诉WhatsApp和其他流行应用程序如何处理这个问题吗?
非常感谢您的帮助。
我已经阅读了stackoverflow和其他地方的大部分相关问题/建议,并得出了我的问题的几个解决方案。我不是ios开发人员,也不知道openfire或xmpp在几天前之前的任何事情,所以我担心我的理解可能不完整,我的解决方案可能存在缺陷。
请确认我的理解并建议是否遗漏了某些内容或是否有更好的方法。请还建议关于实现下面列出的特定解决方案有多复杂。这里的挑战是确定何时需要推送以及在哪里启动该过程。
一种方法是使用xmpp的xep-0184实现来检查消息是否已传递。为此,我们应该在ios数据库中的消息中具有某个已传递标志,当接收到传递的响应时,该标志会更新。因此,我们需要在一段时间后检查此标志,如果传递状态为false,则使用消息启动推送过程。看起来是一个复杂的解决方案(等待响应..稍后检查标志..不是很令人印象深刻)
更直接的方法是在openfire中做一些事情,当openfire无法传递消息时,它将其存储在离线表中,我们可以在该部分进行拦截,并使用消息启动推送过程。这似乎是正确的方法,但我真的很害怕深入openfire并更改某些内容(这可能也很容易,曾经稍微使用过openfire的人可以说吗?)
这是我的最后一招,这不是一个解决方案..但如果我不能在预期时间内(即从现在开始的一周内)正确地完成它,我们计划为所有消息发送推送通知。oppenfire将负责正常聊天,而我们的服务器将为每个消息发送推送,但当应用程序处于前台时,我们会执行某些操作以处理不需要显示的额外推送消息,否则每当有消息时就会收到推送。你们认为这种临时解决方案如何(当然,我们必须尽快更改这种情况),这可行吗(还是我在这里遗漏了什么)?
P.S. 有人能告诉WhatsApp和其他流行应用程序如何处理这个问题吗?
非常感谢您的帮助。