2017-08-18 55 views
0

我的應用需要用戶註冊並登錄才能使用該應用。我正在使用Firebase身份驗證來驗證用戶身份。問題是如果用戶下載應用程序並且沒有登錄,它會收到其他用戶發送的不應該發生的推送通知。用戶只應在他/她登錄時纔會收到與應用程序相關的通知。發生這種情況是因爲令牌是在應用程序下載後立即生成和存儲的。僅當用戶已登錄時,如何生成令牌? 這是我嘗試使用的代碼,但令牌不產生在所有:如何在用戶登錄時生成令牌?

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,所以我不能共享太多的代碼,但是怎麼發送推送到主題而不是令牌?

您可以在用戶登錄或創建帳戶後向用戶訂閱特定主題,並僅向訂閱這些主題的用戶發送推送。

您可以訂閱用戶使用

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

一定的主題,以便發送推手時,你只發送給your_topic_name,因爲你並不需要讓所有的令牌,併發送一個更容易由一個(我認爲你在做什麼)。

當用戶打開應用程序時,您需要再次檢查並訂閱他(爲了安全起見)。

在這裏你可以找到更多關於subscribing users to topics

希望這會有所幫助。

+0

其實我想要下載我的應用程序的所有設備應該能夠得到有關我的應用程序的所有相關的通知唯一的問題是他們應該註冊到我的應用程序。僅僅下載應用程序不應該爲他們提供通知。與Facebook相同,除非您未登錄,否則不會收到任何通知。 –

+0

訂閱主題並不真正服務於我的目的。但無論如何感謝您的建議。 –

相關問題