3

GCM をアプリに統合しています (このGoogle の記事に基づく)。彼らは、「推奨される合理化された登録 API も提供する」と主張しています。お尻の痛みだと思います。私はいくつかの問題の層を乗り越えて戦いましたが、今は次の問題で立ち往生しています:

記事では次のように述べています。

  • MyBroadcastReceiver(マニフェスト内) およびGcmBroadcastReceiver(コード内)。

    私はそれが同じものであり、マニフェストの正しい名前がGcmBroadcastReceiver

  • MyIntentService(マニフェスト内)であり、コードにはまったく言及されていません。

    私が理解しているように、これは拡張/実装する必要があるサービスGCMBaseIntentServiceです。

このサービスのことは私を大いに混乱させます:

  • を使用してString regID = GoogleCloudMessaging.register(SENDER_ID);います。このような場合、GCMBaseIntentService.onRegistered()regID を取得する必要はないようです。

  • GcmBroadcastReceiverまた、プッシュされたメッセージを受信するブロードキャストレシーバーがあります。その場合GCMBaseIntentService.onMessage()は不要です。

これを考慮すると、GCMBaseIntentService+GcmBroadcastReceiverかのどちらかを使用する必要があると感じていGCMBaseIntentServiceます。

この厄介な合理化された登録 API で、これらのどの組み合わせを使用すればよいか、誰か説明してもらえますか?

4

1 に答える 1

4

モバイル デバイスで実行されている Android アプリケーションは、GoogleCloudMessaging メソッドの register(senderID...) を呼び出して、メッセージを受信するように登録します。このメソッドは、アプリケーションを GCM に登録し、登録 ID を返します。この合理化されたアプローチは、以前の GCM 登録プロセスに取って代わります。

これに基づいてGCMBaseIntentService、新しい登録方法を使用する場合は廃止されます。GcmBroadcastReceiverとに置き換えられGoogleCloudMessagingます。

新しい登録プロセスが古いプロセスよりも優れている点がわかりません。デバイスからクラウドにメッセージを送信するために GCM を使用する予定がない場合は、古いGCMBaseIntentService. このリンクは、物事を行う古い方法を示しています。古い方法でもブロードキャスト レシーバが必要ですが、Google が提供するクラスを使用します。(登録を開始する以外に) 記述する必要がある唯一のコードは、 と を実装する を拡張するクラスGCMBaseIntentServiceです。onRegisteredonMessage

GcmBroadcastReceiver新しい「合理化された」登録を使用する場合は、メッセージの処理と登録のみが必要ですGoogleCloudMessaging.register

マニフェストについては:

.MyIntentServiceオプションです:

ブロードキャスト レシーバーが受信したインテントを処理するインテント サービス。オプション。

.MyBroadcastReceiverはおそらく、実装する必要があるブロードキャスト レシーバーを指しており、GcmBroadcastReceiverそのようなレシーバーの例です。

于 2013-05-18T02:11:49.457 に答える