13

Ho integrato il sistema di chat nella mia app iOS e Android tramite XMPP. Ho usato ejabberd 2 sul lato server. Il sistema di chat funziona bene. Voglio integrare la notifica push nelle chat usando APNS e GCM. Come posso inviare una notifica push con ogni messaggio chat? ejabberd 2 ha a disposizione API o estensioni per implementare questa funzione?ejabberd e notifica push

Guida è altamente apprezzabile,

risposta

6

Non v'è alcun plug-in per ejabberd APN o GCM. Penso che tu abbia due opzioni principali: qui

  1. Usa modulo mod_offline_post che invierà POST richiesta su determinato URL. Quindi puoi usare qualsiasi linguaggio di backend esistente per elaborare sia apns che gcm (sto usando le rails come backend in ogni caso quindi questo è solo un enpoint in più per gestirlo).

  2. In base a , creare il proprio modulo che invierà notifiche push anziché la richiesta POST. Ci sono alcuni esempi e librerie che implementano apns e gcm. Cioè apns4erl per apns e this code per gcm. Ma naturalmente, sarebbe bello sapere un po 'di erlang.

3

AFAIK non esiste un modulo ejabberd pubblico che fornisce un'interfaccia a GCM o APN.

Ti suggerisco di implementare un modulo personalizzato con un ejabberd_hook. È possibile visualizzare un esempio di modulo interno ejabberd e hook di presenza here.

Se si desidera inoltrare i messaggi a offline utenti suggerisco offline_message_hook mentre per un filtraggio generico di messaggi Suggerisco filter_packet({From, To, Packet}) e verificare la presenza di tipo di pacchetto (vedi this domanda StackOverflow).

Conoscendo il destinatario è possibile recuperare dal db l'identificativo del token/registrazione del dispositivo e inoltrare il messaggio utilizzando un codice di erlang.

Per APN dare un'occhiata ad alcuni simple code spiegando come funziona o a questo indirizzo ex_apns. Se desideri maggiori informazioni su APN se vuoi un server simulato per APN puoi leggere questo blog post.

Per un esempio di GCM è possibile utilizzare il collegamento di esempio fornito da @Lucas.

+0

Come posso recuperare gettone dispositivo dal db? –

+0

dipende totalmente da come si memorizzano i token e da cosa db. – user601836