web-dev-qa-db-ja.com

Android / Firebase-トピックに登録しているかどうかを確認します

Android)側のトピックにサブスクライブしているかどうかをテストする方法があるかどうか疑問に思っています。

基本的に、私は[〜#〜] hopeing [〜#〜]すべてのデバイスが、トークンが最初にデバイスによって取得されたときに、インストール中にトピックにサブスクライブすることを望んでいます。ただし、デバイスがサブスクライブに失敗する可能性は常にあります。 FCM登録トークンはデバイスに長期間インストールする必要があるため、データの消去、アンインストール/再インストールなどを行わずにonTokenRefresh()メソッドを再度呼び出すことはできません。

私のアイデアは、デバイスがMainActivityのトピックにサブスクライブされているかどうかをテストし、サブスクライブされていない場合は、サブスクライブを再試行することでした。サブスクライブに失敗した場合は、新しいトークンを取得して再試行してください。

    @Override
    public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.e(TAG, "Refreshed token: " + refreshedToken);

    // Subscribe to a topic
    Log.e(TAG, "Subscribing to topic");
    FirebaseMessaging.getInstance().subscribeToTopic("test");

だから、私は購読と購読解除をすることができますが、デバイスがトピックに購読されているかどうかを確認するにはどうすればよいですか?私はグーグルをかなりの割合で行いましたが、残念ながら何も見つかりませんでした。

私はどんな/すべての援助にも大いに感謝します。ありがとう!

9
user5803705

現在、クライアント側でトピックにサブスクライブされているかどうかを確認する方法はありません。

subscribeToTopicの動作は、指定されたトピックにすぐにサブスクライブし、失敗した場合は、(アプリが強制終了されない限り)自動的に再試行します。私の答えを参照してください ここ

onTokenRefreshが多すぎることを確認するためだけに、subscribeToTopic呼び出しを強制すると思います。必要に応じて、最初のアクティビティで単に呼び出すことができます。そうすれば、アプリが起動するたびに、サブスクリプションリクエストが送信されます。

5
AL.