我正在使用这个众所周知的代码在我的服务器上保存一个新的firebase令牌(from: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肯定不够独特。
编辑:很不幸,鲍勃·斯奈德的建议没有奏效。如果删除应用程序数据(缓存)或重新安装应用程序,FirebaseInstanceId#getId()总是不同的。

最佳答案

令牌对每个设备都是唯一的,并且包含应用程序实例ID。11个字符的实例ID(与FirebaseInstanceId.getInstance().getId()返回的实例ID相同)首先出现,然后是冒号,以及令牌的其余部分。例子:

    eiURDSe_P4q:APA91bFvtCzK...LRpzvQOSdNKioklO

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

10-04 12:34
查看更多