gpt4 book ai didi

android - InstanceId#getId() 不返回稳定的 Id

转载 作者:太空宇宙 更新时间:2023-11-03 10:18:19 25 4
gpt4 key购买 nike

根据docs InstanceId:

provides a unique identifier for each app instance

并且实例 ID 稳定但可能会失效,如果:

  • App deletes Instance ID
  • Device is factory reset
  • User uninstalls the app
  • User clears app data

然而,根据我的测试,即使该应用仅从最​​近的应用中被刷过,以下调用似乎也会返回不同的 ID。

InstanceID.getInstance(context).getID();

这是 Google Play 服务中的错误还是我使用它完全错误?

最佳答案

2 tymm 回答:来自客户端库实例 ID 代码:

boolean needRefreshToken() {
String appVersion = sSharedPreferencesHelper.get("appVersion");
if (appVersion == null) {
return true;
}
if (!appVersion.equals(sCurrentAppVersion)) {
return true;
}
String lastTokenAcquiringTime = sSharedPreferencesHelper.get("lastToken");
if (lastTokenAcquiringTime == null) {
return true;
}
Long l = Long.parseLong(lastTokenAcquiringTime);
if (System.currentTimeMillis() / 1000 - l <= 3600*24*7) {
return false;
}
return true;
}

关于直接问题:每个实例 ID 都由存储在名为“com.google.android.gms.appid”的应用首选项中的 key 对支持;
InstanceID.getInstance(context).getID() 以 Base64 格式返回公钥的 SHA-1 摘要。因此,请尝试调查为什么无法从首选项中恢复 KeyPair ;)
库代码 (com.google.android.gms.iid.zzd.class) 中出现错误:

    KeyPair zzdj(String subtype) {
String string2 = this.get(subtype, "|P|");
String string3 = this.get(subtype, "|K|");
...

应该是:

KeyPair zzdj(String subtype) {
String string2 = this.get(subtype + "|P|");
String string3 = this.get(subtype + "|K|");
...

因此,请在 getToken(...) 命令之后从注册 token (它是冒号前的第一部分)获取此 IID。因为 getID() 仅初始化将用于下一个服务器请求的“ promise ”KeyPair,以防万一您的应用程序从任务栏被强行停止,这会导致完全卸载静态变量。
这是热修复(请将其放在调用 getId() 之前):

public void fixPreferencesKeysId() {
SharedPreferences sh = getSharedPreferences("com.google.android.gms.appid", MODE_PRIVATE);
String privk = sh.getString("|K|", null);
if (privk != null) {
sh.edit().remove("|K|").putString("|S||K|", privk).commit();
}
String pubk = sh.getString("|P|", null);
if (pubk != null) {
sh.edit().remove("|P|").putString("|S||P|", pubk).commit();
}
}

关于android - InstanceId#getId() 不返回稳定的 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31294118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com