13

Mam zintegrowany system czatu w mojej aplikacji na iOS i Android przy użyciu XMPP. Użyłem ejabberd 2 po stronie serwera. System czatu działa dobrze. Chcę zintegrować powiadomienia push w moim chating przy użyciu APNS i GCM. Jak wysłać powiadomienie push z każdą wiadomością czatu? ejabberd 2 ma jakieś API lub rozszerzenia dostępne do wdrożenia tej funkcji?ejabberd and Push Notification

Pomoc jest bardzo odczuwalny,

Odpowiedz

6

Nie ma wtyczki ejabberd dla APN lub GCM. Myślę, że masz dwie główne opcje tutaj:

  1. Używaj mod_offline_post moduł, który będzie wysyłał POST wniosek na dany adres URL. Wtedy możesz użyć dowolnego istniejącego języka backendu do przetworzenia zarówno pensów, jak i gcm (mimo to używam szyn jako backendu, więc jest to tylko jeden punkt, aby go obsłużyć).

  2. Na podstawie mod_offline_post, utwórz własny moduł, który wyśle ​​powiadomienia wypychane zamiast żądania POST. Istnieje kilka przykładów i bibliotek, które implementują pensy i gcm. To znaczy. apns4erl dla apns i this code dla gcm. Ale do tego oczywiście dobrze byłoby poznać jakiś erlang.

3

AFAIK nie ma publicznego modułu ejabberd, który zapewnia interfejs do GCM lub APN.

Proponuję zastosować niestandardowy moduł z ejabberd_hook. Możesz zobaczyć przykład wewnętrznego modułu ejabberd i haka obecności here.

Jeśli chcesz przekazać wiadomości do niepołączonych Proponuję offline_message_hook natomiast dla rodzajowego filtrowanie komunikatów Proponuję filter_packet({From, To, Packet}) i sprawdzić typ pakietów (patrz this stackoverflow pytanie).

Znając adresata, możesz pobrać z bazy token urządzenia/numer rejestracji i przesłać wiadomość przy użyciu jakiegoś kodu erlang.

Aby uzyskać APN, zapoznaj się z częścią simple code wyjaśniającą, jak to działa lub z tym erlang ex_apns. Jeśli chcesz uzyskać więcej informacji o APN, jeśli chcesz mieć fałszywy serwer dla APN, przeczytaj ten blog post.

Na przykład GCM można użyć przykładowego łącza udostępnionego przez @Lucas.

+0

Jak mogę pobrać token urządzenia z db? –

+0

to zależy całkowicie od tego, jak przechowujesz tokeny i na jakiej podstawie. – user601836

Powiązane problemy