2017-08-18 8 views
0

アプリを使用するには、アプリでユーザーに登録してログインする必要があります。私はFirebase authを使ってユーザを認証しています。問題は、ユーザーがアプリをダウンロードしてログインしていない場合、他のユーザーから送信されたプッシュ通知を受信することです。ユーザーは、ログインしている場合にのみ、アプリに関連する通知を受け取る必要があります。これは、アプリがダウンロードされた直後にトークンが生成されて保存されるために起こります。ユーザーがログインしている場合のみトークンを生成できますか? これは私が使用しようとしたが、トークンが全く生成されていないコードです:ユーザーがログインしたときにトークンを生成する方法は?

private FirebaseAuth.AuthStateListener mAuthListener; 
@Override 
    public void onTokenRefresh() { 

     final String recent_token = FirebaseInstanceId.getInstance().getToken(); 
     Log.d(REG_TOKEN, recent_token); 
     //databaseReference = FirebaseDatabase.getInstance().getReference().child("Blog"); 
     mAuth = FirebaseAuth.getInstance(); 
     mAuthListener = new FirebaseAuth.AuthStateListener() { 
      @Override 
      public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
       if (firebaseAuth.getCurrentUser() != null) { 
        if(recent_token!=null) 
         Log.d(REG_TOKEN, recent_token); 
        else if(recent_token==null) 
         onTokenRefresh(); 

       } 
      } 
     }; 



    }} 

答えて

0

私は多くのコードを共有することはできませんので、私はネイティブのAndroidに発展していないので、私はこれをコメントするつもりだったが、トークンの代わりにトピックを送信するのはどうでしょうか?

ログインまたはアカウントを作成した後に特定のトピックにユーザーを登録し、これらのトピックを購読しているユーザーにのみプッシュを送信できます。

あなたはpushsを送信するときにだけyour_topic_nameに送ります

FirebaseMessaging.getInstance().subscribeToTopic("your_topic_name"); 

を使用して、特定のトピックにユーザーを購読することができ、そしてすべてのあなたのトークンを取得し、1を送信する必要がないので、それは簡単です1つ(あなたがやっていると思います)。

ユーザーがアプリを開くと、もう一度チェックして登録する必要があります(安全のため)。

subscribing users to topicsについては、こちらをご覧ください。

これが役に立ちます。

+0

実際には、私のアプリをダウンロードするすべてのデバイスは、自分のアプリに関連するすべてのものに関する通知を得ることができればよいと思います。単にアプリをダウンロードしても、通知は提供されません。あなたがログインしていない限り、Facebookと同じです。あなたは通知を受け取ることはありません。 –

+0

トピックの購読は、私の目的にはあまり役立ちません。しかし、とにかくあなたの提案に感謝します。 –

関連する問題