Ответ 1
Пожалуйста, используйте нижеследующий блог, это очень просто и полезно, это отлично работает для меня.
http://symmetricinfinity.com/2013/01/23/ios-push-notifications-from-ejabberd.html
У меня есть интегрированная чат-система в моем приложении iOS и Android с помощью XMPP. Я использовал ejabberd 2 на стороне сервера. Беседа sytem работает отлично. Я хочу интегрировать push-уведомление во время прослушивания с помощью APNS и GCM. Как я могу отправить push-уведомление с каждым сообщением чата? ejabberd 2 имеет какие-либо API или расширения, доступные для реализации этой функции?
Справка очень заметна,
Пожалуйста, используйте нижеследующий блог, это очень просто и полезно, это отлично работает для меня.
http://symmetricinfinity.com/2013/01/23/ios-push-notifications-from-ejabberd.html
Нет модуля ejabberd для apns или gcm. Я думаю, у вас есть два основных варианта:
Используйте модуль mod_offline_post
, который отправит запрос POST
на указанный URL. Затем вы можете использовать любой существующий бэкэнд-язык для обработки как apns, так и gcm (я все равно использую рельсы в качестве бэкэнда, так что это только еще одна точка доступа для обработки).
На основе mod_offline_post
создайте свой собственный модуль, который будет отправлять push-уведомления вместо запроса POST
. Есть несколько примеров и библиотек, которые реализуют apns и gcm. То есть apns4erl для apns и этот код для gcm. Но для этого, конечно, было бы хорошо знать некоторые erlang.
AFAIK нет открытого модуля ejabberd, который предоставляет интерфейс для GCM или APN.
Я предлагаю вам реализовать пользовательский модуль с ejabberd_hook. Вы можете увидеть пример внутреннего модуля ejabberd и крюка присутствия здесь.
Если вы хотите пересылать сообщения автономным пользователям, я предлагаю offline_message_hook
, а для общей фильтрации сообщений я предлагаю filter_packet({From, To, Packet})
и проверять тип пакета (см. this stackoverflow).
Зная получателя, вы можете извлечь из db идентификатор токена/идентификатор устройства и переслать сообщение с помощью некоторого кода erlang.
Для APN взгляните на некоторый простой код, объясняющий, как он работает или с этим erlang ex_apns. Если вам нужна дополнительная информация о APN, если вы хотите, чтобы макет сервера для APN, вы можете прочитать этот блог post.
Для примера GCM вы можете использовать ссылку примера, предоставленную @Lucas.