我已发起**linked_list
以获得MyFirebaseInstanseIdService
,我将直接向您展示代码:
token
我的manifest.xml:
@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();
}
我试图通过broadCast在我的活动中使用共享prefrence获取令牌,但似乎这个类没有被调用。
在我的<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>
中,我看到了这些内容:
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.
答案 0 :(得分:2)
仅在当前令牌过期时调用onTokenRefresh()
方法。当前令牌可能会因以下原因而过期:
应用删除实例ID
在新设备上恢复应用
用户卸载/重新安装应用
用户清除应用数据
还有第一次调用getToken()
的情况,它可能会返回null
值,您应该从中onTokenRefresh()
触发该值。
这样,您应该在初始活动上调用getToken()
来生成令牌。