【问题标题】:FCM - update tokenFCM - 更新令牌
【发布时间】:2017-10-12 10:31:16
【问题描述】:

我正在使用 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 传递令牌。 或者也许有更好的方法在刷新时保存令牌。

【问题讨论】:

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


    【解决方案1】:

    您可以将其保存在共享首选项中,登录时您也可以save a boolean as logedIn in the preferences,在sendRegistrationToServer 中您可以检查该布尔值,如果它是true,那么您可以save it in database

    这样

    private void sendRegistrationToServer(String token) {
    if(getSharedPreferences(Params.IDToken, MODE_PRIVATE).get("logedIn",false)){
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference(Params.USERS).child(user.getUid()).child("token")
            .setValue(token);
       }
      }
    

    【讨论】:

    • 是的,只需为任何登录的用户保存一个令牌 - 它是设备上应用程序安装的地址,而不是设备上应用程序上的用户配置文件,因此您可以将其用于多个用户在同一个应用上(不是人们曾经这样做过)
    • “第一次”执行此操作,即,如果 SharedPrefs 中令牌的值不为空,那么这不是第一次(但请注意,您不会意外擦除该首选项)
    猜你喜欢
    • 1970-01-01
    • 2020-04-11
    • 2020-09-24
    • 2017-05-10
    • 2020-09-07
    • 2017-11-09
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多