gpt4 book ai didi

与谷歌的 firebase token 生成器一起使用的 Android 唯一设备标识符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:29 25 4
gpt4 key购买 nike

我正在创建一个使用 goolg 的 firebase 作为其推送通知服务的应用程序。我只是在使用推送通知服务器,不想使用它的其他服务(例如数据库、身份验证等)。

在我的应用程序中,注册的用户可以拥有多个设备,因此可以拥有多个 firebase token 。调用 onRefreshToken 时会出现问题。我应该知道用户正在使用哪个设备并在我的数据库中更新该特定设备的 token 。所以我应该知道每个设备的唯一标识符,该标识符在设备的生命周期内不会改变。

我想知道是否有更好的方法来解决这个问题,如果没有,我对 android 唯一 ID 感到很困惑。这两个选项是 Settings.Secure.ANDROID_ID 可能有一些问题(所以我不确定我是否应该使用它)和 TelephonyManger.getDeviceId() 有时会返回 null以及没有 sim 插槽的设备(例如平板电脑)。

那么你建议我做什么?

最佳答案

这个答案有 2 个解决方案:

1) 使用 ANDROID_ID 作为设备标识符。

2) 在向其发送第一条消息后,使用云函数和 FCM 确定错误 token 。

<强>1)尝试 Settings.Secure.ANDROID_ID 获取设备 ID。

String deviceAppUID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);
if (deviceAppUID!=null) {
setFirebaseTokenInServer(deviceAppUID, FirebaseDeviceToken);}

Android 正在更改 8.0 (API 26) 中的 ANDROID_ID,以便它仅适用于特定应用程序、用户和设备 ID 的组合。当发生这种情况时,您并没有真正获得对每个应用程序都始终正确的设备 ID,而是在您的特定设备上获得特定应用程序的设备 ID 及其特定的签名 key 。您可以卸载应用,重新安装应用,ANDROID_ID会和之前一样。

这使用户更安全,但仍然允许您保留 Firebase 设备 token ,以防注册 token 因以下原因发生更改:

  • 应用删除实例 ID
  • 应用在新设备用户上恢复
  • 卸载/重新安装应用
  • 用户清除应用数据

然后在 Firebase 中,您可以将这些保存为:

DeviceTokens:
deviceID: firebaseDeviceToken
deviceID: firebaseDeviceToken

2) 使用 Firebase Cloud Messaging 和 Firebase Google Cloud Functions 确定错误 token 。

如果您还使用 Cloud Functions 将 FCM 发送到每个列出的 deviceToken(如果有多个设备则需要这样做),您可以在发送第一个通知后检查响应。如果出现错误,并且错误返回一条消息,指出 token 是错误的,您可以处理错误,然后将其从服务器中删除。

  • 不需要设备 ID,对用户来说更安全。
  • 发送 1 个 FCM 到一个错误的 token ,但之后不再发送
  • 如果 Firebase 团队更改其错误或错误消息,您将必须更改该功能,否则它将不再有效。

有关详细信息,请参阅此答案: Handling refresh tokens for FCM device groups

关于与谷歌的 firebase token 生成器一起使用的 Android 唯一设备标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278550/

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