我正在实施Firebase云消息传递,这给我带来了很多麻烦。我想在每次用户登录时更新令牌,因此当用户登录时,我创建了一个删除令牌并创建新令牌的服务。因此调用onrefreshToken方法。现在我想要的是将用户,idDevice和令牌保存在数据库中,但我不知道该怎么做,因为这个服务(MyFirebaseInstanceIdService)永远不会创建,所以我没有多加一些。 / p>
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d("myFireBase", "Refreshed token: " + refreshedToken);
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String refreshedToken) {
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String idDevice = telephonyManager.getDeviceId();
// Token token = new Token(refreshedToken, idDevice, usuario);
// Call server to save the token
}
}
答案 0 :(得分:1)
FirebaseInstanceIdService只会在应用程序运行时调用,因此首次保存在共享首选项上,并在登录时从共享首选项中获取值。 像这样使用。
public class FirebaseService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
String Tocken_Refresh= FirebaseInstanceId.getInstance().getToken();
SharedPreferences sharedPreferences=getApplication().getSharedPreferences(MyPREFERENCESGCM, MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("fcm",Tocken_Refresh);
editor.commit();
}
}