我在Android上遇到GCM問題。它無法執行onRegistered()
回調,或者在我的其中一個測試設備(Droid2)上返回一個好的regid,但它在另一臺設備(Galaxy Nexus)上運行良好。GCM Android:onRegistered()未被調用
我遵循基本示例here。來電者是這樣的:
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals(""))
GCMRegistrar.register(this, Constants.SENDER_ID);
else
Log.v(TAG, "Already registered");
而且我的表現有這樣的:
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
和
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.gcl.myapp" />
</intent-filter>
</receiver>
爲什麼沒有onRegistered()
回調的工作?什麼可能導致它在一臺設備上工作,但在另一臺設備上失敗?謝謝。
謝謝@ Chris.Jenkins。它不工作的設備運行Android 2.3.4(API級別10)。它安裝了Play商店以及有效的Goggle帳戶。但是,它具有與其他工作設備相同的Google ID。這可能會造成問題嗎? – gcl1
註冊註冊ID是設備/應用程序特定的。 Humm,如果它不在FC上的話。那很奇怪,只能假定GCM不適用於該設備上的任何東西?同步打開了嗎? –
也注意到GCM在過去的某個時間點在部分舊設備(Droid2)上部分工作。那時,像現在一樣,onRegistered()調用從不返回,...但是調用GCMRegistrar.register()確實生成了一個很好的regId,我可以在該應用程序中使用它。我不確定發生了什麼變化,但現在GCMRegistrar.register()和onRegistered()回調都不起作用。 – gcl1