2016-04-01 5 views
0

Ich bin ein Neuling in der Entwicklung von Android-Anwendungen und habe mich gefragt, ob mir jemand helfen kann, ein Problem zu finden.GCM: Android-Widgets. Generiere Token basierend auf WidgetID

Ich verursache ein Widget, das in der folgenden Form [Textansicht] ist [+] [-]

Die Text-Ansicht eine Reihe zeigt, die durch Drücken der durch Drücken der Taste + und verringert erhöht wird - Taste.

Die Schaltflächen Plus und Minus interagieren mit meinem Server, der einen Zählwert zurücksendet, der in der Textansicht angezeigt wird.

Dieses Widget kann auf mehreren Android-Handys installiert werden und zu jeder Zeit sollte die Zählung spätestens sein.

Um dies zu erreichen, habe ich Google Cloud Messaging integriert, um eine Push-Benachrichtigung mit einem Zählwert an alle registrierten Widgets zu senden.

Alles funktioniert gut, wenn das Widget auf verschiedenen Telefonen installiert ist.

Wenn ich jedoch zwei Widgets auf demselben Telefon installiere, ist das Token, das ich von Google erhalte, das gleiche. Der entsprechende Code

angebracht
try { 
     tokenPerWidgetId.put(appWidgetId, instanceId.getToken(getString(R.string.gcm_defaultSenderId), 
      GoogleCloudMessaging.INSTANCE_ID_SCOPE, null)); 
     Log.v("RegisterationToken", registerToken); 
     } catch (IOException ie) { 
     Log.v("RegisterationToken", "Failed"); 
     setViewsOnError(views, " Could not register with Google. Please re-install"); 
       } 

Ich verstehe, warum es passiert, wie nach Google Docs, getToken ersten Mal wird das Token aus dem Server und andere Zeiten geben die Token.

Wie jedoch generiere ich ein Token basierend auf AppWidgetId?

Antwort

0

Ich habe nicht versucht, Widgets zu erstellen, aber mit GCM müssen Sie 2 Registrierungstoken für jedes Widget haben. Wenn Sie die instanceId.getToken beim Erstellen des Widgets aufrufen und separat speichern können, sieht es so aus, als könnte es funktionieren.

+0

Hallo, Danke für die Antwort. Ich bin jedoch verwirrt mit Instanz-ID und Token. Es sieht so aus, als würde Google die Instanz-ID behandeln und ich bekomme dasselbe Token, wenn das Widget auf demselben Handy installiert ist. Lass mich das Ausprobieren. –

+0

Ich habe gerade die Instanz-ID getestet und ausgedruckt. Rufen Sie diese API auf derselben Mobile auf, InstanceID instanceId = InstanceID.getInstance (this); gibt mir die gleiche Instanz ID und damit das gleiche Token –

Verwandte Themen