2015-06-25 45 views
5

Sto imparando come implementare il GCM sia dal lato client (Android) che dal lato server (ASP.NET). Ho passato un po 'di tempo a leggere tutta la documentazione di google relativa allo GCM e ho anche provato il campione che hanno fornito. Perché ho bisogno di integrare il GCM in un'app già esistente, mi piacerebbe sapere alcune cose specifiche.Google Cloud Messaging - Più account Dispositivo multiplo

Come ho capito, l'ID di registrazione è un token che lega l'app su un dispositivo specifico al servizio GCM e al server dell'app; così, il backend può inviare messaggi downstream direttamente a quel dispositivo.

Nel mio scenario, potrei avere più utenti che possono utilizzare l'app sullo stesso dispositivo, il che significa che devono accedere all'app e hanno un account su un database sul lato server. Devo memorizzare un ID di registrazione diverso per ciascun utente su quel dispositivo? O ancora l'ID di registrazione si riferisce solo all'app?

E lo stesso scenario, ma distribuito su più dispositivi, perché un utente può avere più dispositivi?

Grazie in anticipo.

risposta

0

questo si riferisce molto al contesto della vostra applicazione e che cosa si vuole fare con le notifiche

avere una ID di registrazione per dispositivo andrà bene.

Gestisco i miei utenti multipli utilizzando tag di sottoscrizione gestiti dal mio server.

Quindi prendere lo scenario se si dispone di un'applicazione di sport:

utente A B share & utente lo stesso dispositivo. Ogni utente si iscrive a un tag.

Quando l'utente A si disconnette, cancelli i tag associati a quell'utente e quando l'utente B effettua il login, recupera i suoi tag.

Il server conosce le notifiche da inviare al dispositivo in base ai tag per i quali l'utente ha effettuato la sottoscrizione.

multipla scenario dispositivo:

Lo stesso vale, quando il vostro utente si collega si ottiene loro tag. Il dispositivo ha anche un proprio token da GCM.

+0

Ok, ho capito. Stavo anche pensando che potesse essere gestito solo dal server. Nel database, posso memorizzare una relazione tra utenti e ID di registrazione, con un campo che imposta un dispositivo attivo o inattivo per un utente specifico. Pertanto, quando il server deve inviare un messaggio a valle a un utente specifico, recupera tutti gli ID di registrazione attivi e associati e invia la notifica a tutti loro in multicast. Potrebbe essere? –

+0

Questo complica ulteriormente le cose, perché gestire gli ID del database localmente? Cosa succede se l'utente cancella tutti i dati, quindi hai perso i dati per più utenti – AndroidEnthusiast

+0

Cosa intendi con _if l'utente cancella tutti i dati_? Il server memorizzerà tutti gli ID di registrazione inviati e creerà le relazioni in base agli account. Potrebbe essere, come detto nell'altra risposta, che quando un altro utente accede all'app, le informazioni devono essere inviate al server per aggiornare chi è associato a un regID specifico. –

0

L'ID di registrazione è l'ID dell'app, che può essere modificato se la versione dell'app è stata aggiornata. La tua notifica push verrà inviata sul dispositivo con la tua app, indipendentemente dall'account utente. Quindi ogni utente su ogni dispositivo riceverà la tua notifica, devi memorizzare solo un ID di referee per dispositivo.

+0

Ok, ma se devo inviare la notifica solo a un utente specifico? Nella documentazione viene anche riportato che "_La richiesta al server deve essere autenticata se l'app utilizza account._" –

+0

Quindi è necessario memorizzare l'utente corrente e l'ID di registrazione, dove l'utente effettua il login. La situazione con un dispositivo e molti utenti : se il nuovo utente effettua l'accesso, il dispositivo invia informazioni al server, questo utente ha questo ID di registrazione L'utente precedente con questo ID di registrazione deve essere cancellato. Se l'utente utilizza più dispositivi, db deve memorizzare ciascun ID di registrazione. E invierai push a noti reg ID, che corrispondono al tuo utente. – Jane

+0

In base al tuo suggerimento, è meglio eliminare la relazione tra un utente e un regID quando un altro utente accede all'app, giusto? –

0

Per più utenti:. Se i messaggi sono utente specifico, si desidera recuperare l'utente del token e sottoscrivere solo mentre sono connessi a quando si passa agli utenti di rimuovere/annullare la registrazione il token precedente, quindi salvare/registra il token del nuovo utente.

Non dovresti farlo solo se hai più utenti per dispositivo, ma quando un utente si disconnette. Ciò impedirà la visualizzazione di messaggi specifici dell'utente in orari errati a utenti sbagliati.

Per più dispositivi: sembra che stiate cercando Device Group Messaging.

Con la messaggistica di gruppo del dispositivo, i server di applicazioni possono inviare un singolo messaggio a più istanze di un'app in esecuzione su dispositivi appartenenti a un gruppo. In genere, "gruppo" fa riferimento a un insieme di dispositivi diversi che appartengono a un singolo utente.

Questo è anche bello a causa dello collapse_key. Quando uno dei dispositivi sullo stesso account apre una notifica, la notifica verrà ignorata sugli altri dispositivi.

Problemi correlati