android - C2DM 收到相同的消息

标签 android android-c2dm

大家好,我是一名学生,我正在开发一个 Android 应用程序作为我的软件设计类(class)的一个项目。

因此,我设法使整个 C2DM 流程正常运行,并且我的设备可以接收通知。但是,即使我推送不同的消息,每次推送时我收到的消息总是相同的。

我正在按照此处提到的教程进行操作: http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

有时我确实收到了正确的消息,但是我必须等待超过 30 分钟才能推送新消息。在推送另一条消息之前我必须等待多长时间? (我尝试了 2 分钟的等待时间,但我收到了相同的消息)或者我做错了什么。

最佳答案

教程代码存在一个问题,其中使用与先前调用相同的上下文、requestCode、intent 和标志创建未决 Intent ,并且在处理后未取消。所以接收者 (MessageReceivedActivity) 显然引用了之前的 PendingIntent。

解决这个问题的一种方法: 当前未使用“requestCode”属性,因此要使 pendingIntent 唯一,您可以在那里提供一个唯一值,例如:

int ukey = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getActivity(context, ukey,
                intent, 0);

这将允许 MessageReceivedActivity 获得您想要接收的 Intent (双关语/:)。

也许有一种方法可以取消 pendingIntent,但我没能成功。

关于android - C2DM 收到相同的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958569/

相关文章:

java - 改造Gson自定义json通用转换器

java - 字节到兆字节的转换不起作用

android - 在 C2DM 注册过程中将额外数据传递给 C2DMReceiver?

android - C2DM的可靠性

android - 如何在 Android 中使用 addr2line

android - 来自标签的数据未正确传递到新 Activity

android - noEclipse Juno - 没有找到java虚拟机

android - SERVICE_NOT_AVAILABLE Android GCM 上的某些设备

android - 未在构造函数上设置 GCM FC/发件人 ID

android - 是什么导致了这个堆栈跟踪? (gtalkservice & jivesoftware.smack)