2012-04-13 10 views
1

私はこのc2dmコードhttp://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html .it works.iを使った小さなデモを実装しました。サーバーからのプッシュ通知を取得していますが、古い通知を送信するサーバーから通知を送信するときはいつも問題です。私のアンドロイドデバイスを登録して登録IDをサーバーに送信すると、現在の新しい通知が表示されます。問題点を教えてください。事前に感謝しています。androidのc2dmメッセージングとの混乱

+0

私にコードを表示してください –

+0

コンテンツコードは私の質問に投稿したリンクと同じです –

答えて

1

Lars Vogelのチュートリアルに従ったときから覚えている限り、同じ問題。実際にあなたが述べた問題ではありません。

取得しているペイロードを手動で表示するには、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(意図)の呼び出しは、現在のデータと意図リフレッシュ。