当应用程序位于后台时,XMPP客户端必须如何通知新消息?

当应用程序位于后台时,XMPP客户端必须如何通知新消息?,xmpp,openfire,smack,Xmpp,Openfire,Smack,考虑到OPENFIRE不支持XEP-0357(推送通知),那么客户端必须如何通知新消息?用户连接是否必须始终可用?但在whatsApp等其他消息传递应用中,当用户进入后台时,它的状态将变为不可用。另一个问题是开发iOS版本的it,它不支持像android中存在的那样的后台服务。 其他IM客户在这种情况下会做什么?我自己找到了答案。 我在服务器上开发了一个本地API,用于发送推送通知。这个本地API将拥有每个JID的所有用户令牌(当在我的应用程序中生成令牌时,通过rest向我的API发送一个数据包

考虑到OPENFIRE不支持XEP-0357(推送通知),那么客户端必须如何通知新消息?用户连接是否必须始终可用?但在whatsApp等其他消息传递应用中,当用户进入后台时,它的状态将变为不可用。另一个问题是开发iOS版本的it,它不支持像android中存在的那样的后台服务。
其他IM客户在这种情况下会做什么?

我自己找到了答案。 我在服务器上开发了一个本地API,用于发送推送通知。这个本地API将拥有每个JID的所有用户令牌(当在我的应用程序中生成令牌时,通过rest向我的API发送一个数据包)。 当用户离线时,openfire服务器将使用插件将包含消息体和发送方和接收方JSON的POST请求发送到我的本地API。然后API将从db获取目标令牌,并向FCM发送推送请求


注意:openfire中存在不发送POST请求的问题。我也解决了这个问题。如果有人遇到这个问题,请发表评论,我也会给出解决方案。

它无法工作。您需要部署一个对移动规范有良好支持的服务器。请注意,在最新的Android上,在大多数情况下,您也不能在后台运行客户端。感谢@MickaëlRémond的回复。正如您所说,我正在我的服务器上开发一个本地API,以发送推送通知。此本地API将拥有每个JID的所有用户令牌。当用户脱机时,openfire服务器将使用插件向我的本地API发送POST请求。然后API将向FCM发送推送通知请求。这是个好主意吗?此链接提供了以下信息: