如何从MyFirebaseInstanceIdService类中获取额外信息?

时间:2017-03-02 11:01:50

标签: android

我正在实施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
    }
}

1 个答案:

答案 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();

 }
}