ejabberd and Push Notification

北战南征 提交于 2019-12-20 09:21:58

问题


I have integrate chat system in my iOS and Android app using XMPP. I have used ejabberd 2 in the server side. Chatting sytem works fine. I want to integrate push notification in my chating using APNS and GCM. How can I send a push notification with each chat message ? ejabberd 2 has any API or extensions available to implement this feature ?

Help is highly appreciable,


回答1:


Please use the below blog , it is very simple and useful, it is works fine for me.

http://symmetricinfinity.com/2013/01/23/ios-push-notifications-from-ejabberd.html




回答2:


There is no ejabberd plugin for apns or gcm. I think you have two main options here:

  1. Use mod_offline_post module which will send POST request on given url. Then you can use any existing backend language to process both apns and gcm (I am using rails as backend anyway so this is only one more enpoint to handle it).

  2. Based on mod_offline_post, create your own module which will send push notifications instead of POST request. There are few examples and libraries which implements apns and gcm. I.e. apns4erl for apns and this code for gcm. But for that of course it would be good to know some erlang.




回答3:


AFAIK there is no public ejabberd module that provides an interface to GCM or APN.

I suggest you to implement a custom module with an ejabberd_hook. You can see an example of ejabberd internal module and presence hook here.

If you want to forward messages to offline users I suggest offline_message_hook while for a generic filtering of messages I suggest filter_packet({From, To, Packet}) and check for packet type (see this stackoverflow question).

Knowing the recipient you can retrieve from the db the device token/registration id and forward the message using some erlang code.

For APN take a look at some simple code explaining how it works or to this erlang ex_apns. If you want more information about APN of if you want a mock server for APN you can read this blog post.

For an example of GCM you can use the example link provided by @Lucas.



来源:https://stackoverflow.com/questions/16189612/ejabberd-and-push-notification

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!