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