2015-11-03 42 views
9

Sono confuso sulla relazione tra ID di registrazione e token. Nel tutorial per GCM di Google, ci registriamo per un ID di registrazione all'inizio. Tuttavia, otteniamo anche un token. Ora, nei diagrammi, inviamo l'ID di registrazione al server di destinazione. Tuttavia, inviamo anche il token? So che il token è derivato dall'ID di registrazione. Il token è utilizzato come meccanismo di autenticazione tra GCM e l'app e il server non è mai a conoscenza del token?Google GCM, token vs ID di registrazione

risposta

19

Se siete alla ricerca di una conoscenza di base su Google Cloud Messaging, IMO, è possibile fare riferimento a quanto segue:

In sostanza, è necessario fare i passi:

  1. Creare un nuovo progetto a Google Developers Console. In questo passaggio , per semplicità, è sufficiente prendere nota di 2 valori: Project Number, che verrà utilizzato come SENDER_ID nel progetto client; e API server key (creato a Credenziali), che verrà utilizzato come API_KEY nel progetto del server.
  2. Creare un nuovo semplice progetto Android per lato server (con codice sorgente di base come risposta nei seguenti collegamenti).
  3. Creare un nuovo semplice progetto Android per lato client (con codice sorgente di base come risposta nei seguenti collegamenti, ho personalizzato dalla fonte originale a Google Cloud Messaging - GitHub).
  4. Esegui l'app client, riceverai il token di registrazione (significa che il tuo dispositivo è stato registrato con successo). Quindi, incolla (codice hard) questo token alla variabile CLIENT_REGISTRATION_TOKEN nell'app del server (o scrivi codice per inviare questo token all'app del server).

Si può leggere di più alle seguenti domande, uno di loro hanno letto prima con una delle tue domande precedenti:

  1. How to implement a GCM Hello World for Android using Android Studio
  2. Adding Google Cloud Messagin (GCM) for Android - Registration process

Per ulteriori informazioni:

Concetti chiave da Google Cloud Messaging: Overview

Credenziali

  • Sender ID Un valore numerico unico creato quando si configura il progetto API (dato come "Numero del progetto" nella console Google Developers). L'ID mittente viene utilizzato nel processo di registrazione per identificare un server di app a cui è consentito inviare messaggi all'app client.
  • Chiave API Una chiave API salvata sul server dell'app che consente al server dell'applicazione di accedere ai servizi Google. In HTTP, la chiave API è inclusa nell'intestazione delle richieste POST che inviano messaggi.In XMPP, , la chiave API viene utilizzata nella richiesta di autenticazione PLAIN SAS come password per autenticare la connessione. Ottenete la chiave API quando configurate il vostro progetto API.
  • Token di registrazione Un ID rilasciato dai server di connessione GCM all'app client che consente di ricevere messaggi. Nota che i token di registrazione devono essere tenuti segreti.

Spero che questo aiuti!

+0

Ok, quindi il server si preoccupa solo l'ID di registrazione. Non gli importa affatto del token. – mrQWERTY

+3

Il token di registrazione = Id di registrazione, che si trova nell'app del cliente, quindi è necessario fornirlo all'app del server – BNK

+0

Forse si intende SENDER_ID, che come ho detto nel 1 ° passo – BNK

12

GCM ora utilizza il concetto di InstanceID che rappresenta una singola installazione di un'app su un dispositivo (Android o iOS). Ogni InstanceID può emettere diversi token. Questi token vengono utilizzati per identificare l'InstanceID e possono scadere e essere aggiornati.

Sul dispositivo client, si inizializza un InstanceID, quindi con quell'IstanceID si generate a token (token di registrazione). Si invia quel token al proprio server, che utilizza il token per inviare messaggi al InstanceID (applicazione installata). Se quel token viene invalidato per qualsiasi motivo, come l'applicazione viene disinstallata o il token è compromesso, a new token should be generated e inviato al server.

+0

a volte SO utente spiegarlo meglio di google, non so se questo così semplice. Grazie. –

-1

sto ancora registrando con successo con la registrazione metodo Id fino 11 MAGGIO 2016

if (checkPlayServices()) { 
      gcm = GoogleCloudMessaging.getInstance(this); 
      regid = getRegistrationId(context); 

      if (regid.isEmpty()) { 
       registerInBackground(); 
      } 
     } else { 
      Log.i(TAG, "No valid Google Play Services APK found."); 
     } 

APA91bHLUfr71D6K7VTrRH3LGiLFxGNr3qRi3xOB_yNl0fLYsqhlgYXxHzOhQx2WKgqZI3sqxa1ZPORa0-5YBZ1_OFLm9cEg1bTh7wtrpCsHW91MSs2BMIXrHEqyjj2TeoVxnAzA5U8s

Problemi correlati