如果用户有多个设备,如何在我的服务器上存储firebase令牌

时间:2017-04-02 19:20:59

标签: android firebase firebase-cloud-messaging

我正在使用这个众所周知的代码在我的服务器上保存新的firebase令牌(来自:Retrieve the current registration token):

@Override
public void onTokenRefresh() {

    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(refreshedToken);
}

问题是,如果用户在其他设备上安装应用程序,将执行相同的代码,新的firebase令牌将被新的覆盖。

所以我必须区分设备,但我该怎么做呢? Device name肯定不够独特。

编辑:不幸的是,Bob Snyder的建议没有奏效。如果我删除应用程序数据(缓存)或重新安装应用程序,FirebaseInstanceId#getId()总是不同。

1 个答案:

答案 0 :(得分:2)

令牌对每个设备都是唯一的,并包含应用实例ID。首先显示由FirebaseInstanceId.getInstance().getId()返回的11个字符的实例ID,后跟冒号和令牌的其余部分。例如:

    eiURDSe_P4q:APA91bFvtCzK...LRpzvQOSdNKioklO

您可以使用实例ID作为唯一键将令牌存储在服务器上。