2017-07-18 128 views
1

即時獲取令牌不生成..Firebase令牌不生成

onTokenrefresh()不調用。任何人都可以幫忙

它連接到firebase也仍不會生成令牌。

public class MyFireBaseInstanceId extends FirebaseInstanceIdService { 

    private static final String TAG = "MyFirebaseIIDService"; 

    @Override 
    public void onTokenRefresh() { 

     //Getting registration token 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 


     //Displaying token on logcat 
     Log.d(TAG, "Refreshed token: " + refreshedToken); 
     sendRegistrationToServer(refreshedToken); 

    } 

    private void sendRegistrationToServer(String token) { 
     //You can implement this method to store the token on your server 
     //Not required for current project 
     SharedPrefManager.getInstance(getApplicationContext()).saveDeviceToken(token); 
    } 
} 

回答

0

1)請檢查您在項目中是否添加了正確的google-services.json文件。 2)檢查您在清單文件中添加了FCM服務。

+0

添加,但仍然是相同的問題 – Bharath

+0

檢查您的谷歌服務文件是否正確或與您的項目包生成新的一個文件。在manifest.xml文件中定義 –

+0

我添加了它們。但是要在清單中添加什麼。我添加了服務 – Bharath

0

onTokenRefresh將僅在某些條件下可以稱爲:

  • 應用刪除實例ID
  • 應用程序是一個新的設備
  • 用戶卸載上還原/重新安裝該應用
  • 用戶清除應用數據

所以當你第一次啓動應用程序時,它很可能請調用此方法,但不要在第二次啓動時調用此方法。

由於您使用SharedPreference,因此您可以使用它來檢索活動中的令牌。

+0

我重新安裝了,但仍然是同樣的問題 – Bharath

+0

@Bharath您是否在清單中聲明瞭您的服務? – UmarZaii

+0

<服務 機器人:名稱=」 com.example.bharathkumar.samplefb.FireBaseMessagingService」 機器人:啓用= 「真」 機器人:導出= 「真」> Bharath

0

當您獲取FCM實例並在應用中首先刷新令牌時,FCM會生成令牌。當您再次需要時,您必須重新安裝您的設備中的應用程序。

String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
1

我明白了。我剛剛驗證該標記爲空或不。如果token爲null,那麼我們將調用ontokenrefresh()方法。

的代碼是:

tokengenerate.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (token!=null) { 
        Toast.makeText(MainActivity.this,token,Toast.LENGTH_LONG).show(); 
        RegisterToken registerToken = new RegisterToken(); 
        registerToken.execute(); 
       } 
       else 
        myFireBaseInstanceId.onTokenRefresh(); 

      } 
     }); 
    } 
0

你肯定FirebaseInstanceIdService在AndroidManifest.xml中正確定義這樣

<service android:name=".MyFirebaseMessagingService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
     </intent-filter> 
    </service> 
<service android:name=".FirebaseIDService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 
+0

Thanx的答覆。我想通了。 – Bharath

+0

歡迎@ Bharath –

1

嘗試這個從任何活動:

FirebaseMessaging.getInstance().subscribeToTopic("news"); 
String notificationToken = FirebaseInstanceId.getInstance().getToken(); 

如果仍然沒有得到令牌,在您的項目中的google-services.json文件上出現錯誤

+0

它不工作 –

0

確保您將實例ID的屬性添加到活動選項卡下的Android清單文件中。在androidmanifest中錯誤地添加屬性可能會導致此錯誤。