C2DM获得相同的消息

时间:2012-03-31 18:35:34

标签: android android-c2dm

您好我是学生,我正在开发一个Android应用程序作为我的软件设计课程的项目。

所以,我设法使整个C2DM过程正常工作,我的设备可以接收通知。然而,即使我推送不同的消息,每次推送内容时,我得到的消息总是相同的。

我正在按照这里提到的教程:  http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

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

3 个答案:

答案 0 :(得分:2)

教程代码存在一个问题,即使用与先前调用相同的context,requestCode,intent和flags创建挂起的intent,并且在处理之后不会取消。因此,收件人(MessageReceivedActivity)显然引用了之前的PendingIntent。

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

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

这将允许MessageReceivedActivity获取您想要的意图(双关语意图/ :)以使其接收。

也许有办法取消pendingIntent,但我无法解决它。

答案 1 :(得分:1)

在遵循Lars Vogel的教程时我遇到了同样的问题。很可能你有同样的问题,即你实际上收到了好消息,但显示它的活动没有按预期工作。

为确保您收到好消息,请在onReceive功能中添加断点或日志,并查看您获得的内容。

如果您收到不同的消息,那么您的问题与我的问题相同:消息显示不正确。

Vogel教程中的MessageReceivedActivity在方法结束时调用super.onCreate(savedInstanceState);,当它应该在该方法中首先调用它时。 See my detailed solution to a related question here.

答案 2 :(得分:0)

检查您是否滥用了collapse_key,因为这可能会导致您所看到的内容。

我已经使用了相当数量的C2DM,我从未见过这个。我经常一个接一个地发送一系列消息,然后就可以了。

我还会仔细检查以确保您收到您认为自己的信息 - 查看意图参数。