我已經爲了發起MyFirebaseInstanseIdService
得到token
,直接我會告訴你的代碼:MyFirebaseInstanceIdService沒有調用爲什麼?
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
storeRegIdInPref(refreshedToken);
sendRegistrationToServer(refreshedToken);
Intent registrationComplete = new Intent(Config.REGISTRATION_COMPLETE);
registrationComplete.putExtra("token", refreshedToken);
LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
}
private void sendRegistrationToServer(final String token) {
// sending gcm token to server
Log.e(TAG, "sendRegistrationToServer: " + token);
}
private void storeRegIdInPref(String token) {
SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("regId", token);
editor.commit();
}
我的manifest.xml:
<service android:name=".services.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".services.MyFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
我就先通過廣播令牌我也活動與共享prefrences,但似乎這個類沒有援引。
在我log
我看到那些臺詞:
D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization.
D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization.
這
I/FirebaseInitProvider: FirebaseApp initialization successful
正如AL在他的回答中所說:您的代幣可能已經創建好了,所以'onTokenRefresh'不會被調用。卸載/重新安裝應用程序以強制刷新令牌,或[獲取當前令牌](https://firebase.google.com/docs/cloud-messaging/android/client#retrieve-the-current-registration-token)在主視圖的'onCreate'中放入'FirebaseInstanceId.getInstance()。getToken();'。 –
@FrankvanPuffelen我以前遇到過這個問題,就像你說的,只是**卸載/重新安裝**。 – Ibrahim
這確實有效,在開發過程中很好,大多數開發人員遇到這種情況。但是,如果您已經發布了該應用,則不能要求用戶也這樣做。因此,您需要處理兩種情況:在主視圖中讀取標記FirebaseInstanceId.getInstance()。getToken()並監視onTokenRefresh()。 –