我已经实现了一个使用此 c2dm 代码http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html的小演示。它可以工作。我正在从服务器获取推送通知,但问题是每当我从服务器发送通知时它发送旧通知。它只会在我注册我的 android 设备并将注册 ID 发送到服务器时发送当前的新通知。请建议我应该是什么问题。提前谢谢..
问问题
177 次
2 回答
1
据我记得,当我自己遵循 Lars Vogel 的教程时,我遇到了同样的问题。其实不是你说的问题。
尝试在 onReceive() 函数中放置一个断点,以手动查看您获得的有效负载。在我的情况下,消息是好的,但MessageReceivedActivity
不是,它总是显示坏消息。
将super.onCreate()
MessageReceivedActivity 中的方法放在方法之上。
它是怎样的:
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_result);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String message = extras.getString("payload");
if (message != null && message.length() > 0) {
TextView view = (TextView) findViewById(R.id.result);
view.setText(message);
}
}
super.onCreate(savedInstanceState);
}
应该如何:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String message = extras.getString("payload");
if (message != null && message.length() > 0) {
TextView view = (TextView) findViewById(R.id.result);
view.setText(message);
}
}
}
于 2012-05-07T14:39:42.590 回答
0
@RaulGogo 的回答有点帮助,但没有为我解决问题。要在此处查看此解决方案 https://stackoverflow.com/a/10079537/264618并阅读下面的评论。
通常在 C2DMMessageReceiver 类中更改此代码:
int ukey = (int) System.currentTimeMillis();
PendingIntent pendingIntent = PendingIntent.getActivity(context, ukey,
intent, 0);
并将其添加到 MessageReceivedActivity 类中:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);//important!
注意: setIntent(intent) 调用使用当前数据刷新意图。
于 2012-05-28T08:32:36.377 回答