How the XMPP client must notified of new Message,

2019-03-01 09:30发布

问题:

Considering OPENFIRE not supports XEP-0357 (Push Notification), then how the client must notified of new messages? Does the user connection must be always AVAILABLE? But in other messaging apps like whatsApp, when user goes to background, it's presence turns into UNAVAILABLE. Other problem is for developing iOS version of it that does not supports BACKGROUND-SERVICE like as in android exists. What the other IM clients do in this situation?

回答1:

I founded my answer myself. I developed a local API in my server, to send push notification. This local API will have all the users tokens per jids (when Token generated in my app, sends a packet via rest to my API). When a user is offline, openfire server will use CallBackOnOffline plugin to send POST request containing a JSON of message body and sender and receiver to my local API. Then the API will gets the destination Token from db and sends a request of push to FCM.

Note: CallBackOnOffline has a problem in openfire that not sends POST requests. I solved that too. If anyone faced with this problem, comment it, I'll give it's solution too.