您好我是学生,我正在开发一个Android应用程序作为我的软件设计课程的项目。
所以,我设法使整个C2DM过程正常工作,我的设备可以接收通知。然而,即使我推送不同的消息,每次推送内容时,我得到的消息总是相同的。
我正在按照这里提到的教程: http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html
有时我会收到正确的信息但是我必须等待超过30分钟才能推送新信息。在推送另一条消息之前我需要等待多长时间? (我尝试了2分钟的等待时间,但我得到了同样的信息)或者是我做错了什么。
答案 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,我从未见过这个。我经常一个接一个地发送一系列消息,然后就可以了。
我还会仔细检查以确保您收到您认为自己的信息 - 查看意图参数。