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();
}
}
答案 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 +)但在较低的设备中会失败