7

onRegistered 方法永远不会被调用,在 logcat 中我看到最后一行正在获取唤醒锁。

  • 09-26 14:03:23.285: D/GCMRegistrar(15820): 重置退避
  • 09-26 14:03:23.285: V/GCMRegistrar(15820): 注册应用程序 *a of senders 735175912799
  • 09-26 14:03:23.895: V/GCMBroadcastReceiver(15820): onReceive: - com.google.android.c2dm.intent.REGISTRATION 09-26 14:03:23.895: V/GCMRegistrar(15820): 设置名称重试接收器类到 *.notifications.MyGCMBroadcastReceiver
  • 09-26 14:03:23.895:V/GCMBroadcastReceiver(15820):GCM IntentService 类:- *.notifications.GCMIntentService
  • 09-26 14:03:23.903: V/GCMBaseIntentService(15820): 获取唤醒锁

我有自己的广播接收器:

import com.google.android.gcm.GCMBroadcastReceiver;

public class MyGCMBroadcastReceiver extends GCMBroadcastReceiver {

    @Override
    protected String getGCMIntentServiceClassName (Context context) {
        return GCMIntentService.class.getCanonicalName();
    }

}
4

2 回答 2

1

以下是常见的解决方案:

1) 将您的服务命名为"GCMIntentService"

2)把你GCMIntentService的默认包

3) 在发送 GCM 注册请求之前调用

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);

因此,如果您的设备或清单有任何问题,它会告诉您。4)检查权限。特别是在权限中检查包鬃毛。这是一个嵌套,如果您在权限中弄乱了包名称,它将适用于最新的 androids(Jelly Bean +),但在较低的设备中会失败

于 2014-01-22T06:38:39.037 回答
1

我有类似的问题。原来我忘记在ApplicationManifest.xml中添加:

<service android:name=".GCMIntentService"/>
于 2013-01-17T09:57:22.947 回答