2014-03-06 15 views
9

Kurzversion: Wird die Absicht com.google.android.c2dm.intent.REGISTRATION überhaupt noch verwendet oder wurde sie von GCM komplett veraltet?Ist com.google.android.c2dm.intent.REGISTRATION veraltet?

Längere Version: Google gcm-demo-client erklärt diese Absicht in seinem Filter jedoch, wenn ich nach dem gleichen Verfahren, ich eine gültige Registrierung ID erhalten, wenn ich rufe gcm.register() und dann, meine Rundfunkempfänger ein zusätzliches Registrierungs-ID erhalten wegen der REGISTRATION-Filter, und diese zweite Registrierungs-ID ist falsch (ich kann keine Benachrichtigung an sie senden).

An diesem Punkt überlege ich, den REGISTRATION Filter zu entfernen (und halten nur RECEIVE), aber ich möchte sicherstellen, dass ich nicht etwas wichtiges im Protokoll vermisse.

+1

soweit ich mich erinnere, es am Ende des Jahres 2012 mindestens – mangusta

+1

das ist mein Verdacht zu veraltet war aber die Tatsache, es ist immer noch in der offiziellen Google-Demo macht mich fragen, wie wahr das ist. Der GCM-Registrierungsansatz behandelt auch nicht den Fall, in dem Google beschließt, Ihrer App eine neue Registrierungs-ID zu senden (dieses Szenario wird dadurch abgedeckt, dass ein Rundfunkempfänger eine REGISTRATION-Absicht behandelt, wie dies bei C2DM der Fall war). –

+0

Ich glaube nicht, dass Sie etwas verlieren, wenn Sie 'gcm.register()' aus dem Code aufrufen und den 'REGISTRATION' Filter – mangusta

Antwort

2

Sie suchen wahrscheinlich eine ältere Version der offiziellen Google-Demo. Die current version verwendet nicht com.google.android.c2dm.intent.REGISTRATION, wie Sie hier sehen können:

<receiver 
     android:name=".GcmBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <!-- Receives the actual messages. --> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <category android:name="com.google.android.gcm.demo.app" /> 
     </intent-filter> 
    </receiver> 
+0

In der Tat. Ich bin mir nicht sicher, wie ich zu einem alten gekommen bin, da ich dachte, ich hätte es von dem Ort bekommen, auf den du zeigst.Die neue Registrierung erlaubt es immer noch nicht, den Fall zu bearbeiten, bei dem Google Ihre Registrierungs-ID hinter Ihrem Rücken ändert, da die GCM-Server Ihre Anwendung jetzt nicht mehr darüber informieren können, aber ich nehme an, dass sie dies erst beim GCM tun werden Ansatz kann damit umgehen. Vielen Dank. –

5

Sie riskieren nicht Registrierungs-IDs für einen kleinen Prozentsatz des Benutzers erhalten.

https://blog.pushbullet.com/2014/02/12/keeping-google-cloud-messaging-for-android-working-reliably-techincal-post/

Lektion # 2: bereit sein Register wiederholt versagt bei einigen Geräten obwohl ein Arbeits Registrierungs-ID erstellt wird.

Dieser Tipp ist eher bizarr und möglicherweise nicht mehr relevant, aber ich habe keine Art zu bestätigen, wenn der Fehler in GCM behoben wurde, so hier ist es.

Der Fehler geht so: Egal wie oft Sie Register aufrufen, es wird immer fehlschlagen und eine Ausnahme auf einigen Geräten auslösen. Obwohl das -Register eine Ausnahme auslöst, wird eine funktionierende Registrierungs-ID erstellt, aber nicht zurückgegeben. Um dieses Registrierungs-ID zu erhalten, fügen Sie diese Erlaubnis Ihres GCM BroadcastReceiver den IntentFilter:

<action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 

Erhalten GCM lieben. =)