FCM - 更新令牌

时间:2017-10-12 10:31:16

标签: android firebase firebase-realtime-database firebase-cloud-messaging

我使用FCM获取用户令牌。我首次登录应用程序时成功将用户令牌保存在firebase数据库中。 我只是想知道在刷新令牌时该怎么做。 我尝试了一些东西,但我不确定这是否是正确的方法。

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

@Override
public void onTokenRefresh() {
    super.onTokenRefresh();

    String token = FirebaseInstanceId.getInstance().getToken();
    SharedPreferences prefsToken = getSharedPreferences(Params.IDToken, MODE_PRIVATE);
    SharedPreferences.Editor edit = prefsToken.edit();
    edit.putString("token",token);
    edit.commit();

    sendRegistrationToServer(token);
}

private void sendRegistrationToServer(String token) {
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference(Params.USERS).child(user.getUid()).child("token")
            .setValue(token);
    }
  }

在sharedPreferencess中,我将令牌传递给登录活动并将其保存在firebase数据库中。但是,我担心它会启动" sendReistrationToServer"方法,因为它会崩溃,因为用户仍然需要注册。我不确定这是否是正确的方法。 我想也许可以通过localBroadCast或Intent传递令牌。 或者更新时可能有更好的方法来保存令牌。

1 个答案:

答案 0 :(得分:1)

您可以将其保存在共享偏好设置中,登录时也可以Web,在save a boolean as logedIn in the preferences中您可以检查该布尔值,如果是sendRegistrationToServer那么您可以true 1}}。

喜欢这个

save it in database