2012-04-13 77 views
1

我已经实现了一个小演示,使用此c2dm代码http://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html。我works.i从服务器获取推送通知,但问题是每当我发送通知从服务器它发送旧通知。它只发送目前新的通知,每当我注册我的Android设备,并发送注册ID到server.Please建议我应该是什么问题。提前感谢..与Android的c2dm消息混淆

+0

请告诉我的代码 – 2012-04-13 05:20:04

+0

内容的代码是一样的,我的问题的链接,我有后 – 2012-04-13 05:25:53

回答

1

据我记得,当我跟着拉尔斯沃格尔的教程我自己,我有一样的问题。这实际上不是你说过的问题。

尝试把一个断点在的onReceive()函数来手动看到你所得到的有效载荷。在我的情况下,消息是好的,但MessageReceivedActivity不是,它总是显示不良信息。

从MessageReceivedActivity把super.onCreate()方法上的方法的顶部。

它是如何:

@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); 
} 

如何应该是:从@RaulGogo

@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); 
     } 
    } 
} 
0

回答帮助了一点,但并没有解决这个问题对我来说。在这里看到这个解决方案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(意向)调用刷新意图与当前数据。