Scadenza id di logging di Google Cloud Messaging

Sto utilizzando Google Cloud Messaging per la mia applicazione Android e sto cercando di capire quando l'istanza di logging scade. Da questo post ho capito che Google tende a aggiornare l'ID in un momento. Sono curioso di come la mia applicazione saprà quando l'id viene rinfrescato? Se Google decide di aggiornare l'ID e il mio server è finché l'invio del messaggio al vecchio ID non credo che il messaggio verrà inviato. Quindi dovrei provare a registrarmi each volta e vedere se gli id ​​sono uguali?

Anche lo stesso messaggio dice che l'id potrebbe essere aggiornato quando la versione di app cambia, ma sulla modifica della versione attraverso il manifesto l'ID di logging non è cambiato. Allora, qual è il motivo per tentare di registrare di nuovo le modifiche della versione?

  • Come utilizzare l'image personalizzata per la password di edittext come l'applicazione banca d'asse
  • leggere il file dalle risorse
  • passando l'argomento a DialogFragment
  • Cosa significa il triangolo arancione nella colonna di destinazione della window di scansione dispositivo Android?
  • C'è un'equazione per trovare l'utilizzo della batteria basata sull'uso del cpu da parte del process?
  • Imposta la width di TextView in termini di caratteri
  • EDIT Ecco il lato del server. Dove esattamente si conserverebbe il canonico id?

    Codice del server:

    <?php // Message to be sent $message = $_POST['message'];  // Set POST variables $url = 'https://android.googleapis.com/gcm/send';  $fields = arrays(                 'registration_ids' => arrays($_POST['registrationIDs']),                 'data'             => arrays( "message" => $message ),                 );  $headers = arrays(                     'Authorization: key=' . $_POST['apiKey'],                     'Content-Type: application/json'                 );  // Open connection $ch = curl_init();  // Set the url, number of POST vars, POST data curl_setopt( $ch, CURLOPT_URL, $url );  curl_setopt( $ch, CURLOPT_POST, true ); curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );  curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode( $fields ) );  // Execute post $result = curl_exec($ch);  // Close connection curl_close($ch);  echo $result;  ?> 

  • C'è un modo per sapere se un'attività è stata avviata con Espresso?
  • Android utilizzando Firebase Analytics insieme a Google Analytics
  • Più frammenti, setRetainInstance (true) e rotazione dello schermo
  • Posso impostare "android: layout_below" in fase di esecuzione, a livello di programmazione?
  • Android, Come dividere gli elementi ListView in tre parti?
  • l'applicazione della camera non funziona?
  • 4 Solutions collect form web for “Scadenza id di logging di Google Cloud Messaging”

    Sto cercando di capire quando l'id di logging scade

    Il server GCM di solito si aggiorna (quindi il tuo vecchio ID di logging è scaduto) i id di logging. Quando esattamente ciò accade non è documentato da nessuna parte. Ma sanetworking avvisati quando questo accade.

    Come viene comunicato?

    Quando invii una notifica a un ID di logging scaduto, per la prima volta verrà inviato il messaggio (notifica), ma riceverai un nuovo ID di logging con il nome canonico del nome . Ciò significa che l'ID di logging che hai inviato il messaggio è stato modificato in questo ID canonico, quindi modificatelo anche sul tuo server .


    Se Google decide di aggiornare l'ID e il mio server è fino all'invio del messaggio al vecchio ID non credo che il messaggio verrà inviato

    Come ho detto, sarà inviato per la prima volta, anche dopo la scadenza.


    Anche lo stesso post dice che l'id sarebbe aggiornato quando la versione di app cambia

    Non credo che questo succeda per sicuro. Ma anche se accade (cambiamenti di logging) è lo stesso scenario descritto in precedenza, quindi è sufficiente prendersi cura dell'identity framework; canonica .

    EDIT

     $result = curl_exec($ch); $result = json_decode($result); $canonical_ids_count = $result->canonical_ids; if($canonical_ids_count){ //update your DB by replacing the registration id with //the canonical id(new registration id) } 

    Non sono esattamente sicuro quando il regId GCM viene aggiornato, ma la documentazione di GCM Client afferma che "Controllare se l'applicazione è stata aggiornata, in caso affermativo, deve cancellare l'ID di logging poiché il regID esistente non è garantito per funzionare con la nuova versione di app". Quindi sì, potrebbe ancora utilizzare il vecchio regalo, ma non è garantito che non avrà un nuovo regId.

    Come per http://developer.android.com/google/gcm/client.html#sample-register , a differenza delle versioni precedenti di GCM e C2DM, Google stessa non aggiorna la logging. Una volta ottenuto l'ID di logging dalla logging iniziale, è bene andare, fatta exception per un caso: dovrai ancora registrarti quando l'utente aggiorna a una nuova versione (questo caso è anche trattato nell'esempio nel collegamento precedente ).

    Quando un'applicazione viene aggiornata, dovrebbe invalidare il proprio ID di logging esistente, in quanto non è garantito che funzioni con la nuova versione. Poiché non esiste un metodo del ciclo di vita chiamato quando l'applicazione viene aggiornata, il modo migliore per get questa validation è memorizzare la versione dell'applicazione corrente quando viene memorizzato un ID di logging.

    Per get l' ultimo ID GCM Ecco il mio lavoro in giro.

     $result = curl_exec($ch); $result = json_decode($result, true); $GCMIDChanged = $result['canonical_ids']; if($GCMIDChanged) { $NewGCMId = $result['results'][0]['registration_id']; //Update your DB with $NewGCMId } 

    Nel codice di cui sopra, sto verificando se i canonical_ids esistono nel risultato.

    Se i canonical_ids esistono allora ho il nuovo registration_id

    Così, ora il sistema aggiornerà automaticamente il nuovo ID Gcm each volta che viene modificato.

    Aggiornare :

    Il codice riportto di seguito può essere utilizzato se l'ID GCM viene modificato più volte

     $GCMIDChanged = $result['canonical_ids']; if($GCMIDChanged) { $NewGCMIdList = end($result['results']); $NewGCMId = $NewGCMIdList['registration_id']; } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.