2012-04-13 34 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(意向)調用刷新意圖與當前數據。