从未调用gcm.unregister()时发生意外的gcm未注册消息

时间:2014-04-01 22:56:00

标签: android push-notification google-cloud-messaging

这只发生在我的Kyocera Rise上。我有一个应用程序依赖于GCM在手机之间进行通信。我的Nexus 4和我的HTC One X之间的通信工作正常,每当我发送推送通知时,两个手机都会收到com.google.android.c2dm.intent.RECEIVE操作的意图。但是,在Kyocera Rise上运行完全相同的代码会产生完全不同的结果:每当我发送推送通知时,收到的意图都会使用“未注册”的额外参数执行com.google.android.c2dm.intent.REGISTRATION操作。即使我在成功注册Google的几秒钟内发送推送通知(我必须成功检索用于推送的设备ID),结果仍然是未注册的消息。为什么呢?

编辑:这里有一个更清晰的图片,说明发生了什么。 我所有的其他手机:我注册手机 - >我发送推送通知 - >手机收到com.google.android.c2dm.intent.RECEIVE意图并附加消息

Kyrocera Rise:我注册了手机 - >我等待任何时间(如果是0秒或5分钟没关系,将不会收到单个推送通知) - >我发送推送通知 - >手机立即通过“未注册”额外参数接收com.google.android.c2dm.intent.REGISTRATION意图

编辑2:清单的相关部分:

<receiver
    android:name="edu.neu.madcourse.wanfunglee.comm.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="edu.neu.madcourse.wanfunglee.comm" />
    </intent-filter>
</receiver>

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4242000" />
</application>

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="edu.neu.madcourse.wanfunglee.comm.permission.C2D_MESSAGE" />

1 个答案:

答案 0 :(得分:2)

确保您的应用程序的主程序包在C2D_MESSAGE权限的清单和GCM广播接收器的类别中使用。

相关问题