Autore Topic: Google Cloud Messaging e registration id list  (Letto 502 volte)

Offline CyberDev

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Google Cloud Messaging e registration id list
« il: 18 Novembre 2015, 11:32:09 CET »
0
Salve a tutti,
sto sviluppando un app ed ho iniziato da ieri a vedere come funzionano le notifiche push in quanto devo risolvere un problema.
Ho letto che vi sono delle liste che contengono i registration id per identificare univocamente i client. La mia domanda è:
E' possibile creare più liste di registration_id?
Chiedo questo perchè:
immaginiamo di avere 50 devices con questa app che sto sviluppando. Questi 50 devices vengono suddivisi in 10 devices per gruppo quindi abbiamo 5 gruppi da 10 devices l'uno. Le mie notifiche devono far riferimento solo ad un gruppo di questi. Quindi ho

Gruppo 1
Gruppo 2
.
.
.
.
Ora invio una notifica che voglio che arrivi, ad esempio, solo ai devices del gruppo 1 e secondo la mia logica dovrei avere 5 liste diverse, una per ogni gruppo.

Sto sbagliando a ragionare?
Quindi ritorniamo alla mia domanda:

E' possibile creare più liste di registration_id?
 

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Google Cloud Messaging e registration id list
« Risposta #1 il: 18 Novembre 2015, 13:17:58 CET »
0
Se ho capito bene ciò di cui hai bisogno, dipende dalla logica del tuo server e da cosa deve discriminare un device del gruppo 1 da un device del gruppo 2.

Dopo che hai ottenuto il token chiami un tuo servizio web per salvare il client token da qualche parte.

Fondamentalmente tu avrai un database e per ogni riga ci sarà il token e qualcosa che indicherà il gruppo.

Questa divisione la puoi fare sia in fase di registrazione oppure durante l'uso della app.. basta che alla fine tu riesca a sapere quale è il gruppo di appartenenza. Alla fine quando mandi un messaggio push indichi tutti i token del gruppo X.

Se la discriminante è numerica... tieni traccia degli utenti registrati e quando superi i 10 passi al gruppo successivo.

Offline CyberDev

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Re:Google Cloud Messaging e registration id list
« Risposta #2 il: 18 Novembre 2015, 13:22:52 CET »
0
grazie mille per la risposta.
Conosci qualche tutorial dove spiega passo passo come implementare le notifiche push? Inglese o italiano non fa differenza... ho cercato un po su google e trovo guide quasi sempre differenti l'un l'altra...

Il mio back-end usa servlet. Quindi da come ho capito è una cosa che devo implementare io il fatto delle varie liste o che fanno gia le API di Google? So come riconoscere i vari gruppi il problema ce l'ho su come suddividerli... Perche se ho capito bene Google usa delle liste di registration id e non capisco se posso fare liste differenti o se le API gestiscono una sola lista. In pratica faccio questo in quanto voglio che un gruppo venga notificato quando effettuo una modifica,che interessa quel gruppo, sul database ed il device non deve ricevere a vista la notifica come le normali notifiche push di whatsapp ad esempio, ma l'importante è che in background il device se ne accorga e possa fare una query per vedere le modifiche apportate ed aggiornare il database in locale...
« Ultima modifica: 18 Novembre 2015, 13:25:02 CET da CyberDev »

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Google Cloud Messaging e registration id list
« Risposta #3 il: 18 Novembre 2015, 14:04:32 CET »
0
Allora.. andiamo con ordine.
- GCM supporta due modalità, una sono le classiche notifiche push che vanno dal cloud al device e le altre sono vere e proprie comunicazioni bidirezionali. Le prime si risolvono inviando un messaggio (e sono quelle che ti interessano) le seconde fondamentalmente richiedono un protocollo da Instant Messaging (XMPP mi pare). Io mi riferisco alle prime.

- In questo scenario il client chiama un servizio di Google e riceve un token che verrà utilizzato in seguito per identificare quel device. Questa comunicazione avviene tra la app e Google.

- Alla ricezione del token devi quindi informare il tuo server e dire che ti sei registrato a Google con la app tal dei tali con quel token. Per farlo puoi usare più o meno quello che vuoi, basta che fai un servizio (json/xml/urlencoded.. scritto come vuoi anche in php).
Banalmente puoi chiamare: tuosito.com/servizio.php?token=ILTOKEN&idgruppo=IDGRUPPO e scrivere sul database il token e il gruppo su una nuova riga***

- quando hai una modifica del gruppo X prendi tutti i token assiciati e fai una richiesta di invio messaggio push a Google utilizzando quella lista di ID. Non so se Google supporta delle liste predefinite, ma le puoi creare al volo tu con questo sistema, semplicemente mandando uno dietro l'altro tutti gli id di quel gruppo.

-Una volta che Google ha ricevuto la richiesta, spara ai device della lista il messaggio push e a te riporta (mi pare) un json che ti informa sugli esiti dell'operazione

- Tieni a mente che al device non arriva una NOTIFICA push. Arriva un MESSAGGIO push. Tu dovrai solo dichiarare un receiver per il messaggio, come da documentazione, senza bisogno di dover visualizzare per forza una notifica.

Io ho usato i tutorial di Google...

*** pare che nelle ultime versioni di GCM Google effettui un refresh degli ID ogni tanto. Quindi dovresti avere anche un altro identificativo nel database (email? id generato casualmente e salvato nelle sharedpreferences del device?) perché quando viene generato un nuovo token dovresti sovrascrivere il vecchio, altrimenti ti ritroveresti col passare del tempo con delle liste lunghe e col 90% dei messaggi inviati inutilmente a token non più attivi.

Offline CyberDev

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Re:Google Cloud Messaging e registration id list
« Risposta #4 il: 18 Novembre 2015, 14:29:41 CET »
0
Ora sto capendo molto meglio. L ultima cosa che hai detto riguardo al refresh degli ID vuol dire che la mia app si iscrive e dopo un tot di tempo devo salvare nuovamente il token nel database xk viene cambiato?

Offline undead

  • Utente senior
  • ****
  • Post: 666
  • Respect: +113
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6
  • Play Store ID:
    DrKappa
  • Sistema operativo:
    Windows 10 64-bit, Windows 8.1 64-bit
Re:Google Cloud Messaging e registration id list
« Risposta #5 il: 18 Novembre 2015, 21:40:52 CET »
0
Si nella documentazione di google c'è scritto che possono fare un refresh dei token.
In pratica generano un nuovo id.
Credo che la cosa più logica sia gestirsi un dato univoco (email o id generato da te) nelle sharedpreferences e poi quando arriva un token aggiornato rimandare tutto al servizio.
Il servizio dovrebbe prima cercare se nel database esiste il tuo dato univoco.
Se non c'é fa una insert sennó un update.

Offline CyberDev

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Re:Google Cloud Messaging e registration id list
« Risposta #6 il: 19 Novembre 2015, 10:56:14 CET »
0
grazie mille per la disponibilità... Ci penso un attimo come posso crearlo e semmai ti faccio sapere se dovessi trovare problemi...