2015-07-29 2 views
6

Kurz arbeiten: In Parse-Installation Tischgerät Token hinzugefügt werden, nicht richtig, wenn ich neuen GCM-API verwenden. im Moment folgende Art von Gerät Token in Parse Installationstabelle hinzugefügt.Android Parse-Push-Benachrichtigung und neue GCM falsches Gerät Token generieren und Push-Benachrichtigung analysieren nicht

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


Ausführliche Beschreibung:

I neue GCM api verwendet haben Anmeldung ID zu erhalten . Ich brauche das RegId für den internen Gebrauch.

Ich habe Code vom folgenden Link von Google verwendet: Google cloud messaging android.

Ich habe einen Punkt notiert. Wann immer ich app apps starte, bekomme deviceToken richtig. Ich bin Aktualisierung "user" Feld in nach der Anmeldung folgenden Code onCreate von 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(); 
      } 
     } 
    }); 

Im Allgemeinen, wenn über Code ausführen deviceToken zu Above geändert wurde erwähnt Token, das falsch zu sein scheint. So funktioniert meine Push-Benachrichtigung nicht.

+0

Wie überprüfen Sie die deviceToken geändert wurde und ist falsch – AniV

+0

wenn meine app ersten Mal laufe ich es deviceToken Feld des Installations Tabelle aussehen ok überprüft haben. Nach der Anmeldung, wenn ich "user" zur Installation speichere, wird das Feld deviceToken in das oben erwähnte Token geändert. Hinweis: manchmal funktioniert es auch gut. –

Antwort

1

Ich habe Problem gelöst.

Ich muss GCM-Gerät Token an andere Webdienst übergeben, so habe ich folgenden Code verwendet, um Token von GCM zu erhalten.

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

Nach dem Abrufen von Token von diesem Code Parses deviceToken geändert. Also anstatt den obigen Code zu verwenden, habe ich folgenden Code verwendet, um DeviceToken zu bekommen und es löste das Problem.

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