1

このc2dmコードを使用する小さなデモを実装しましたhttp://www.vogella.com/articles/AndroidCloudToDeviceMessaging/article.html .it works.iはサーバーからプッシュ通知を取得していますが、サーバーから通知を送信するたびに問題が発生します古い通知を送信します。Androidデバイスを登録して登録IDをサーバーに送信するたびに、現在の新しい通知のみを送信します。何が問題なのかを教えてください。よろしくお願いします..

4

2 に答える 2

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

それがどうあるべきか:

@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 に答える