大家好,我是一名学生,我正在开发一个 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/