2015-07-29 15 views
6

Breve: In installazione parse dispositivo tavolo pedina non viene aggiunto correttamente quando uso nuovo GCM API. subito dopo il tipo di token dispositivo aggiunto nella tabella di installazione Parse.Android notifica parse spinta e nuova GCM generano dispositivo sbagliato token e analizzare notifica push non funziona

DeviceToken: | ID | 1 |: crGctxOB068: APA91bFgPRehabJcm9CYdS948iqX2_ppLj02CtbzmEHR0cfbuPooq5F - hqqvR9AH-Ez6MWMQON1Toc2DiNJTNdpRc3nmm3ukIpWJ1jHaXq0Iug6MoHbmKb9U0ak2CrKznkpKnPY5_Jp


Descrizione dettagliata:

ho usato nuovo GCM API per ottenere la registrazione id . Ho bisogno di quello regId per uso interno.

Ho usato il codice dal seguente link di google: Google cloud messaging android.

Ho notato un punto. ogni volta che inizio l'analisi delle app ottengo il deviceToken correttamente. Dopo il login sto aggiornando campo "utente" utilizzando seguente codice nel onCreate di mainActivity

ParseACL acl = new ParseACL(); 
acl.setPublicReadAccess(true); 
acl.setPublicWriteAccess(true); 

ParseInstallation installation =  ParseInstallation.getCurrentInstallation(); 
    installation.setACL(acl); 

    if (ParseUser.getCurrentUser() != null) { 
     installation.put("user", ParseUser.getCurrentUser()); 
    } 
installation.saveInBackground(new SaveCallback() { 
     @Override 
     public void done(ParseException e) { 
      if (e == null) { 
       Log.e("installation", "success"); 
       Log.i("parse", "token after save : " + ParseInstallation.getCurrentInstallation().getString("deviceToken")); 
       ParsePush.subscribeInBackground("", new SaveCallback() { 

        @Override 
        public void done(ParseException e) { 

         if (e != null) { 

          Log.e("error: ", e.getLocalizedMessage()); 
          e.printStackTrace(); 
         } else { 

          Log.e("subscribed: ", "to broadcast channel"); 
          Log.i("parse", "token after subscribe : " + ParseInstallation.getCurrentInstallation().getString("deviceToken")); 
         } 
        } 
       }); 

      } else { 
       Log.e("installation", "failed"); 
       e.printStackTrace(); 
      } 
     } 
    }); 

Generalmente quando sopra il codice eseguito deviceToken fu cambiato di cui sopra gettone che sembra sbagliato. Quindi la mia notifica push non funziona.

+0

Come si fa a verificare è la deviceToken ha cambiato ed è sbagliato – AniV

+0

quando la mia applicazione eseguita prima volta che ho controllato campo deviceToken della tabella di installazione che guardare ok. dopo il login quando salgo "utente" per l'installazione, quindi il campo DeviceToken viene cambiato con il token sopra indicato. Nota: a volte funziona bene anche. –

risposta

1

Ho risolto il problema.

Ho bisogno di passare il token dispositivo GCM ad altri webservice quindi ho usato il seguente codice per ottenere token da GCM.

InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); 
       String token = instanceID.getToken(CommonUtils.SENDER_ID, 
         GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 

Dopo aver ricevuto token da questo dispositivo di parse del codice, è stato modificato. Quindi, invece di usare il codice sopra ho usato il seguente codice per ottenere deviceToken e ho risolto il problema.

ParseInstallation.getCurrentInstallation().getString("deviceToken"); 
Problemi correlati