2012-07-21 12 views
43

So che le registrazioni C2DM scadono e si suppone di aggiornare periodicamente l'ID di registrazione. È questo il caso di GCM? osservando il seguente codice sulla guida GCM per Android (mostrato sotto), sembra che tu lo faccia solo una volta e non sia necessario aggiornarlo, ma non lo vedo scritto esplicitamente da nessuna parte, quindi volevo solo controllare.L'ID registrazione GCM scade?

final String regId = GCMRegistrar.getRegistrationId(this); 
if (regId.equals("")) { 
    GCMRegistrar.register(this, SENDER_ID); 
} else { 
    Log.v(TAG, "Already registered"); 
} 
+0

analogo: http://stackoverflow.com/questions/16838654/handling-registration-id-changes-in-google-cloud-messaging-on-android – trante

risposta

41

EDIT: QUESTA RISPOSTA E 'MODO DATA, non ho idea di che cosa il comportamento attuale IS


mi sono trovato la risposta. Non è necessario registrarsi di nuovo in qualsiasi momento, just once according to the example in the docs.

Inoltre, a differenza delle versioni precedenti di GCM e C2DM, Google stessa non aggiornare la registrazione stessa ora: una volta che hai l'id di registrazione dalla registrazione iniziale vi sono buone per andare, tranne per un caso : non ancora bisogno di registrare nuovamente quando gli aggiornamenti utente a una nuova versione (questo caso è anche trattati nell'esempio nel link qui sotto):

quando un'applicazione viene aggiornata, dovrebbe invalidare la sua attuale ID di registrazione, in quanto non è garantito il funzionamento con la nuova versione. Poiché non viene richiamato alcun metodo del ciclo di vita quando l'applicazione è aggiornata a , il modo migliore per ottenere questa convalida è memorizzare la versione dell'applicazione corrente quando viene memorizzato un ID di registrazione.

+0

Ma come generare la registrazione id mannn ????? –

+1

@AndroidKiller: leggi i documenti: http://developer.android.com/google/gcm/index.html –

+0

hey @MohamedHafez.Il tuo primo paragrafo proviene da C2DM e non dalla documentazione GCM, il che significa (credo) che non si applica a GCM. Questo rende la tua risposta un po 'fuorviante. Thx – AndroidGecko

10

Penso che alla fine si aggiorni, sì. Dalla documentazione ufficiale:

Un ID di registrazione esistente può cessa di essere valida in un certo numero di scenari, tra cui: Se l'applicazione annulla la registrazione manualmente mediante l'emissione di un intento com.google.android.c2dm.intent.UNREGISTER. Se l'applicazione viene automaticamente annullata, ciò può accadere (ma non è garantito) se l'utente disinstalla l'applicazione. Se l'ID di registrazione scade. Google potrebbe decidere di aggiornare gli ID di registrazione. Per tutti questi casi, è necessario rimuovere questo ID di registrazione dal server di terze parti e interrompere l'utilizzo per inviare messaggi. Accade quando il codice di errore non è registrato.

Questo potrebbe accadere in una richiesta di GCM dal server 3rd-party, che restituisce una risposta JSON con l'errore registrato dispositivo.

Una volta che questo accadrà, spetterà a te aggiornare gli id ​​corrispondenti.

http://developer.android.com/guide/google/gcm/gcm.html

+0

Quindi è salvare verificare solo se il token ha cambiato nel mio 'RegistationIntentService'? Posso memorizzare il token nelle preferenze condivise e controllare ogni volta per vedere se è cambiato. – Zapnologica