0

https://developers.google.comのガイドラインを使用してプロジェクトでGCMを実装しました。 IntentServiceを拡張>クラスGCMRegistrationIntentService、それは私のmainActivityから開始された -デバイストークンがバックグラウンドで更新されたときに通知を受け取りません

:デバイストークンを受信するための

  1. :私はテイクを持っている

    手順は次のとおりです。

    - >私が使用している。このサービスで:私は成功したトークンを受け取った

    InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); 
    token = instanceID.getToken(AppConstants.SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); 
    

  2. LocalBroadcastListenerは、ステップ1で生成されたトークンを取得し、それを共有プリファレンスに保存する(私のメッセージサーバーにも送信します)。

  3. クラスGCMTokenRefreshListenerServiceInstanceIDListenerServiceを拡張して古いものが期限切れになった場合にトークンを取得します。

    - >これで私はonTokenRefresh()

GCMRegistrationIntentServiceへの呼び出しを行ったが今の私の質問は以下のとおりです。

  1. と呼ばれることGCMTokenRefreshListenerServiceその場合には?
  2. instanceIDとは何ですか? instanceIDのライフサイクルは何ですか?
  3. 私が使用して、端末からサービスを走った:私は毎回新しいトークンを与えた

    ./adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n package.name/service.name. 
    

    。この新しく生成されたトークンを共有プリファレンスに保存するにはどうすればよいですか?

  4. 私はこのサービスから新しいトークンを受け取ったとき、私のトークンが変更されたので私は通知を受け取りません。私は、トークンを更新するために私のアプリを開く必要があります。このトークンを更新するには?

  5. トークンを取得するためにアプリを開くたびにGCMに電話をかけなければなりませんか?
+0

どれが処理されますマニフェスト残りの部分で適切にサービスを指定する必要がありません代わりに新しいバージョン([FCM](https://firebase.google.com/docs/cloud-messaging/))を実装していないのはなぜですか? –

答えて

3
  1. あなたのトークンが更新されるたびにGCMTokenRefreshListenerServiceそれはAndroidのシステムによって自動的に呼び出されるコールする必要はありません。

  2. インスタンスIDは、アプリケーションのインスタンスごとに固有のIDを提供します。あなたはそれについての詳細を見つけることができますhere

  3. 最初に述べたように、サービスを実行する必要はありません。トークンをリフレッシュするたびに自動的に呼び出されます。トークンをサーバーに送信するには、RegistrationServiceという別のサービスを呼び出す必要があります。 SharedPreferenceにトークンを保存するには、トークンを受け取ったらRegistrationServiceからそれを行うことができます。

  4. GcmListenerServiceで通知を受け取ることはありません。このサービスは、プッシュ通知によってサーバーからデータが送信された場合にのみ呼び出されます。あなたのトークンが変更/更新されるたびに、onTokenRefresh()メソッドでコールを受け取ります。 RegistrationServiceを使用して通知を正しく受信するには、サーバーにこの新しいトークンを知らせる必要があります。また、更新されたトークンを取得するためにアプリを開く必要はありません。あなたがプッシュ通知に必要なサービスのいずれかを呼び出すか、起動する必要はありませんんが

  5. あなただけのすべてのものは、Androidシステムによって

+0

きちんと説明しました。よくやった。 :D –

関連する問題