Firebaseクラウドメッセージングを使用してモバイルアプリとブラウザアプリの間にメッセージングを実装することを検討していますが、ドキュメントが答えていないようにいくつか質問があります。
メッセージを受信できるようにするには、登録トークン(RT)が必要です。メッセージは、RT、トピック、またはデバイスグループに送信できますnotification_key
。RTも使用できます:
RTも期限切れ/変更される可能性があります。
私のアプリでは、RTユーザーごとのリストを維持しています。ここで、RTが変更されると、
申し訳ありませんが、それは多くの質問ですが、これを経験した人にとってはパイになるはずです;)
- 古いトークンを登録解除し、新しいトークンをトピックに登録する必要がありますか?
申し訳ございませんが、古いトークンはFCM自体によって破棄されるため、サブスクリプションを解除する必要はありません。新しいトークンについては、はい、必要なトピックにサブスクライブする必要があります。通常は、(Androidでは)subscribeToTopic()
にonTokenRefreshed()
を含めることで行われます。
- 古いトークンを削除して、新しいトークンをデバイスグループに追加する必要がありますか?
はい。デバイスグループメッセージングのマッピング/関係を処理する必要があります。私の答えを見てください ここ 。これはトピックとは異なります。トークンは無効になりますが、対応する登録キーの登録トークンのリストの一部として保持されます。
デバイスグループに送信すると、トークンの1つでNotRegistred
エラーを受け取る可能性があるのはそのためです。 :)
- トークンのデバイスグループ/トピックに関する情報を取得することは可能ですか?
デバイスグループメッセージング(#2と同じ)の場合、開発者(あなた)はこれらの詳細を自分で管理する必要があります。トピックについては、 InstanceID API を使用できます。具体的には、details
パラメータをtrue
に設定します。
[オプション]ブール値
details
:このクエリパラメータをtrue
に設定して、このトークンに関連付けられたデバイスの接続情報やFCMまたはGCMトピックサブスクリプション情報(ある場合)を含む、利用可能なIIDトークンの詳細を取得します。指定しない場合、デフォルトはfalse
です。
- トークンをデバイスグループに複数回追加できますか?
ああ。はい。 sameトークンですか?もしそうなら、私はまだそれを試していません。追加する前に、クライアント側でいくつかのチェックを行うこともできます。
- トークンをトピックに複数回サブスクライブできますか?
再購読するつもりなら、はい。サブスクライブのリクエストの重複を意味する場合は、結果はまだ成功すると思います。ただし、動作に変化はありません。
- 同じトークンの複数のサブスクリプション/追加により、重複したメッセージが受信されますか?
それをテストしました。重複するトピックサブスクリプションと同じトークンをデバイスグループに追加することの両方で重複するメッセージを受信することはありません。 FCMは、登録トークンがデバイスグループにすでにサブスクライブ/追加されている場合、登録トークンのサブスクライブ/追加の要求を無視しているようです。