【发布时间】:2013-04-12 09:33:30
【问题描述】:
我有一个使用openfire的ios聊天应用程序,我需要做的是在消息(1)由于任何原因无法传递,(2)应用程序处于暂停状态时发送推送通知,即不能自行生成通知。
我已经阅读了关于 stackoverflow 和其他地方的大部分相关问题/建议,并且我得出的解决方案很少。我不是ios开发人员,前几天对openfire或xmpp一无所知,所以我担心我对事物的理解可能不完整,我的解决方案可能存在缺陷。
请确认我对它的理解,并建议我是否遗漏了什么或者是否有更好的方法。还请就实施下列特定解决方案的复杂程度提出建议。
这里的挑战是确定什么时候需要推送,以及在哪里启动流程,所以
1) 一种方法是使用 xmpp 的 xep-0184 实现来检查消息是否已传递。为此,我们应该在 ios 数据库中有一些带有消息的传递标志,当从另一端接收到传递的响应时更新。所以我们需要在一段时间后检查这个标志,如果传递状态为假,则使用消息启动推送过程。看起来是一个复杂的解决方案(等待响应..检查标志有一些时间延迟..不是很令人印象深刻)
2) 更直接的方法是在 openfire 中做一些事情,当 openfire 无法传递消息时,它会将其存储在离线表中,我们可以对该部分进行一些拦截并使用消息启动推送过程。这看起来是正确的方法,但我真的很害怕在 openfire 中得到那么多并改变一些东西(这也可能很容易,用过 openfire 的人可以告诉我们吗?)
3) 这是我最后的手段,这不是一个解决方案。但如果我不能在预期的时间范围内(现在是一周后)正确地做到这一点,我们计划为所有消息。 oppenfire 会处理正常的聊天,而我们的服务器会为每条消息发送一个推送,但是当应用程序处于前台时,我们会做一些事情来处理不需要显示的额外推送消息,否则只要有一个推送就会收到信息。你们如何看待这种临时的方法(我们当然必须尽快改变它),这是否可行(或者我在这里也遗漏了一些东西)。
附:谁能告诉 Whatsapp 和其他流行的应用程序是如何处理这个问题的?
非常感谢您的帮助。
【问题讨论】:
-
感谢提及 xep-0184 协议!
标签: ios push-notification xmpp chat openfire