web-dev-qa-db-ja.com

Firebase Cloud Messaging-登録トークンの管理

Firebaseクラウドメッセージングを使用してモバイルアプリとブラウザアプリの間にメッセージングを実装することを検討していますが、ドキュメントが答えていないようにいくつか質問があります。

メッセージを受信できるようにするには、登録トークン(RT)が必要です。メッセージは、RT、トピック、またはデバイスグループに送信できますnotification_key。RTも使用できます:

  • 直接
  • トピックを購読する
  • デバイスグループに追加するには

RTも期限切れ/変更される可能性があります。

私のアプリでは、RTユーザーごとのリストを維持しています。ここで、RTが変更されると、

  1. 古いトークンを登録解除し、新しいトークンをトピックに登録する必要がありますか?
  2. 古いトークンを削除して、新しいトークンをデバイスグループに追加する必要がありますか?
  3. トークンのデバイスグループ/トピックに関する情報を取得することは可能ですか?
  4. トークンをデバイスグループに複数回追加できますか?
  5. トークンをトピックに複数回サブスクライブできますか?
  6. 同じトークンの複数のサブスクリプション/追加により、重複したメッセージが受信されますか

申し訳ありませんが、それは多くの質問ですが、これを経験した人にとってはパイになるはずです;)

22
Ralf Bokelberg
  1. 古いトークンを登録解除し、新しいトークンをトピックに登録する必要がありますか?

申し訳ございませんが、古いトークンはFCM自体によって破棄されるため、サブスクリプションを解除する必要はありません。新しいトークンについては、はい、必要なトピックにサブスクライブする必要があります。通常は、(Androidでは)subscribeToTopic()onTokenRefreshed()を含めることで行われます。


  1. 古いトークンを削除して、新しいトークンをデバイスグループに追加する必要がありますか?

はい。デバイスグループメッセージングのマッピング/関係を処理する必要があります。私の答えを見てください ここ 。これはトピックとは異なります。トークンは無効になりますが、対応する登録キーの登録トークンのリストの一部として保持されます。

デバイスグループに送信すると、トークンの1つでNotRegistredエラーを受け取る可能性があるのはそのためです。 :)


  1. トークンのデバイスグループ/トピックに関する情報を取得することは可能ですか?

デバイスグループメッセージング(#2と同じ)の場合、開発者(あなた)はこれらの詳細を自分で管理する必要があります。トピックについては、 InstanceID API を使用できます。具体的には、detailsパラメータをtrueに設定します。

[オプション]ブール値details:このクエリパラメータをtrueに設定して、このトークンに関連付けられたデバイスの接続情報やFCMまたはGCMトピックサブスクリプション情報(ある場合)を含む、利用可能なIIDトークンの詳細を取得します。指定しない場合、デフォルトはfalseです。


  1. トークンをデバイスグループに複数回追加できますか?

ああ。はい。 sameトークンですか?もしそうなら、私はまだそれを試していません。追加する前に、クライアント側でいくつかのチェックを行うこともできます。


  1. トークンをトピックに複数回サブスクライブできますか?

再購読するつもりなら、はい。サブスクライブのリクエストの重複を意味する場合は、結果はまだ成功すると思います。ただし、動作に変化はありません。


  1. 同じトークンの複数のサブスクリプション/追加により、重複したメッセージが受信されますか?

それをテストしました。重複するトピックサブスクリプションと同じトークンをデバイスグループに追加することの両方で重複するメッセージを受信することはありません。 FCMは、登録トークンがデバイスグループにすでにサブスクライブ/追加されている場合、登録トークンのサブスクライブ/追加の要求を無視しているようです。

24
AL.