android - GCM 安卓 : onRegistered() not being called

标签 android notifications google-cloud-messaging

我在 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/

相关文章:

android - 单击差异通知后如何打开相同的 Activity

android - 如何集成 Push Sharp for Android GCM(推送通知)?

android - 如何通过 GCM.send 发送整数、bool

android - 使用 Oracle 服务器实现 Android 通知

android - 防止在 NFC 读取时重新打开 Activity

c# - Xamarin 构建错误 : error APT0000: In <declare-styleable> . ..,无法找到属性

php - 从 HTML 读取 Base64 图像到 android picasso 适配器

android - 在 Android 中添加提醒

android - FCM 在通知栏中显示灰色图标并提供空的 getData() getExtras()

android - 点击后删除通知