我在 Android 上遇到 GCM 问题。它无法在我的一个测试设备 (Droid2) 上执行 onRegistered()
回调,或者返回一个好的 regId - 但它在另一台设备 (Galaxy Nexus) 上运行良好。
我正在关注基本示例 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");
我的 list 有这个:
<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()
回调不起作用?是什么导致它在一台设备上工作,但在另一台设备上失败?谢谢。
最佳答案
如果它在某些设备上工作但在其他设备上不工作,则它与以下之一有关:
- Android 4.0.4 之前的设备需要有效的谷歌帐户才能工作。
- GCM 仅适用于装有 Play 商店应用和 API 8 及更高版本的设备。
- 您的 list 格式错误 - 使用 Lint 检查!
- 设备/应用程序已注册,Play 实现可能不会再次返回。请先尝试
GCMRegistrar.unregister(this);
。
希望对您有所帮助!
关于android - GCM 安卓 : onRegistered() not being called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443871/