https://developers.google.comのガイドラインを使用してプロジェクトでGCMを実装しました。 IntentService
を拡張>クラスGCMRegistrationIntentService
、それは私のmainActivityから開始された -デバイストークンがバックグラウンドで更新されたときに通知を受け取りません
:デバイストークンを受信するための
:私はテイクを持っている
手順は次のとおりです。
- >私が使用している。このサービスで:私は成功したトークンを受け取った
InstanceID instanceID = InstanceID.getInstance(getApplicationContext()); token = instanceID.getToken(AppConstants.SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
。
LocalBroadcastListenerは、ステップ1で生成されたトークンを取得し、それを共有プリファレンスに保存する(私のメッセージサーバーにも送信します)。
クラス
GCMTokenRefreshListenerService
InstanceIDListenerService
を拡張して古いものが期限切れになった場合にトークンを取得します。- >これで私は
onTokenRefresh()
にGCMRegistrationIntentService
への呼び出しを行ったが今の私の質問は以下のとおりです。
- と呼ばれることGCMTokenRefreshListenerServiceその場合には?
- instanceIDとは何ですか? instanceIDのライフサイクルは何ですか?
私が使用して、端末からサービスを走った:私は毎回新しいトークンを与えた
./adb shell am startservice -a com.google.android.gms.iid.InstanceID --es "CMD" "RST" -n package.name/service.name.
。この新しく生成されたトークンを共有プリファレンスに保存するにはどうすればよいですか?
私はこのサービスから新しいトークンを受け取ったとき、私のトークンが変更されたので私は通知を受け取りません。私は、トークンを更新するために私のアプリを開く必要があります。このトークンを更新するには?
- トークンを取得するためにアプリを開くたびにGCMに電話をかけなければなりませんか?
どれが処理されますマニフェスト残りの部分で適切にサービスを指定する必要がありません代わりに新しいバージョン([FCM](https://firebase.google.com/docs/cloud-messaging/))を実装していないのはなぜですか? –