当前位置: 首页 > 知识库问答 >
问题:

当从未调用过 gcm 时出现意外的 gcm 未注册消息

蒯嘉赐
2023-03-14

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

编辑:这里有一张更清晰的图片。我所有的其他手机:我注册电话-

我注册了电话-

编辑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个答案

成浩漫
2023-03-14

确保您的应用程序的主包在C2D消息权限的清单中使用,并在GCM广播接收器的类别中使用。

 类似资料:
  • 问题内容: 我已经使用GCM很长时间了。有一天,它突然破裂了。问题是我发送的第一个推送获得了成功状态,但该应用程序未收到任何推送。我发送的第二次推送失败,并显示NotRegistered错误。我重新安装该应用程序:成功(未收到通知),失败(未注册)->循环。我不知道发生了什么变化。Google支持非常无助,需要花费大量时间来回答简单的问题,无论是GCM问题,APNs问题还是客户问题。如果以前有人遇

  • 我使用的是Android GCM推送服务,它在一段时间内运行良好,但如果我让我的应用程序闲置几分钟,或者当我在代码修改后重新运行它时,我没有收到任何消息,GCM服务器给我这个错误:“NotRegistered”我做了一些重新搜索,我发现了这个问题,但我还不能在那里发表评论(低声誉:(而且帖子太旧了) 在浏览过程中,我发现Google服务器有时会自动刷新注册id,所以我需要知道的是GCM服务器何时对

  • 我尝试使用GCM发送APN。设备注册OK,GCM和IOS设备令牌被接收。当我尝试发送有效载荷没有"通知"节点: 一切正常。 但是我想处理应用程序在后台时的通知 根据文档,我将有效负载修改为: 第一次尝试: 但没有收到通知。 第二次尝试: 然后应用程序不会收到任何通知,即使我删除了通知节点。所以我必须移除它,重新安装,接收新的代币。 第二期: 我试图检查APN使用NWPusher,但得到错误:无效令

  • 根据文件: 如果希望前台应用程序接收通知消息或数据消息,则需要编写代码来处理onMessageReceived回调。 null 我是不是漏掉了什么?不应该是同一个服务处理应用程序的两个应用程序状态来接收消息吗?我不想在app已经打开时显示系统栏通知,但我确实想改变UI中的一些元素,以指示用户他们在聊天中有新消息。 代码如下: 服务:

  • 孤儿GCM注册ID何时过期? 复制步骤: 并接收注册ID 验证推送通知的接收 工厂重置 并接收注册ID 验证推送通知的接收 但是,现在您仍然可以发送到旧的注册ID并接收“成功: 1”。该注册ID何时过期,在何种情况下过期?

  • 我已经从中看到了“GCM体系结构概述”http://developer.android.com/guide/google/gcm/gcm.html.文档说,当android应用程序注册GCM时,会调用onRegistered(上下文c,字符串regId),其中包含regId,然后用户将该regId发送到其服务器。该文件称“谷歌可能会定期刷新注册ID”。我的问题是,我怎么知道谷歌已经为用户刷新了re