0

バックグラウンド

  • 私は 1 つの Android アプリを持っています
  • 私は 2 つの Google API プロジェクトを持っているので、明らかに 2 つの SENDER_ID と 2 つの API キーがあり、これらのプロジェクトは両方とも Google Cloud Messaging で有効になっています。
  • インテントから EXTRAS を抽出し、インテント エクストラ バンドルの「from」キーに基づいてプロジェクトごとに異なる IntentService を生成する 1 つのブロードキャスト レシーバ。また、ComponentName を使用して IntentService が生成されます。

この「from」キーは PROJECT_ID/ SENDER_ID であり、これらに基づいて、インテントを処理する別のインテント サービスを生成します。

これを行う手順は、 https ://developer.android.com/google/gcm/client.html から学びました。

問題 アプリケーションの起動時に、それぞれの PROJECT_ID/SENDER_ID で GoogleCoudMessaging シングルトンを使用して GCM サーバーに登録する 2 つの JAVA クラスを呼び出します。

これは正常に実装され、両方の登録 ID を取得します。

しかし、これらの両方の Google プロジェクトに対してプッシュ通知を送信すると、両方のインテント エクストラを受信し、1 つはキー「from」の下に PROJECT_ID を持ち、もう 1 つはこのキーの下に null を持ちます。

問題は、2 番目に登録されたプロジェクトは常にプッシュ メッセージで PROJECT_ID を取得するのに対し、最初に登録したプロジェクトは PROJECT_ID をインテント エクストラで取得しないことです。

実装に欠けていることは明らかですか?

4

1 に答える 1

0

両方の送信者 ID を使用して、GCM に一度だけ登録することをお勧めします。

GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(contexts);
gcm.register (sender1,sender2);

このようにして、両方の送信者に対して機能する単一の登録 ID が得られます。

うまくいけば、それはあなたの問題を解決します。

于 2014-08-09T12:16:05.350 に答える