GCM onRegistered未调用

时间:2012-09-26 22:02:05

标签: android google-cloud-messaging

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

  
      
  • 09-26 14:03:23.285:D / GCMRegistrar(15820):重置退避
  •   
  • 09-26 14:03:23.285:V / GCMRegistrar(15820):注册app * a发件人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):获取唤醒锁
  •   

我有自己的Broadcastreceiver:

import com.google.android.gcm.GCMBroadcastReceiver;

public class MyGCMBroadcastReceiver extends GCMBroadcastReceiver {

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

}

2 个答案:

答案 0 :(得分:1)

我有类似的问题。事实证明我忘了添加到Application Manifest.xml:

<service android:name=".GCMIntentService"/>

答案 1 :(得分:1)

以下是常见的解决方案:

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

2)将您的GCMIntentService放入默认包

3)在发送GCM注册请求呼叫之前

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

因此,如果您的设备或清单有任何问题,它会告诉您。 4)检查权限。特别是在权限中检查包鬃毛。如果您在许可中搞砸了包名,它将适用于最新的机器人(Jelly Bean +)但在较低的设备中会失败