使用唯一标识符flutter / android识别设备
Posted
技术标签:
【中文标题】使用唯一标识符flutter / android识别设备【英文标题】:Identify device by using an unique identifier flutter / android 【发布时间】:2021-02-20 07:32:34 【问题描述】:我的用例是我想唯一标识我的用户设备,因为我想为他们提供订阅并且不想使用任何类型的登录,而是使用可以将其保存在后端的唯一标识符,因此即使用户卸载或重新安装我的应用程序,仍然可以访问内容。此外,我曾尝试使用 androidId (SSAID),但它可以在应用登录更改或设备重置时更改。 我使用 firebase 作为后端并在前端颤振。
【问题讨论】:
【参考方案1】:您可以使用下面的库来查找设备的唯一 ID:
Device ID library
这也是重复的question,所以下次提问前请注意搜索答案。 :)
最后,我不完全确定您的项目范围,但如果您在 Firebase 上保存敏感或非敏感用户数据,使用设备 UID 登录用户可能会出现问题,例如在用户丢失手机的情况下他们将无法恢复丢失的数据。就像我说的,我不确定你的项目的范围,但只是想一想。
如果您需要任何进一步的帮助,请告诉我!
【讨论】:
嘿,感谢您的快速回复,但正如我所提到的,我已经尝试使用此 device_info (SSAID),但它更改了 2 3 个新版本,因此我无法进一步使用它,其次我没有使用用户敏感信息,因此用户无需担心,如果您可以建议任何其他方法来实现此目的,请告诉我 请查看我在回答中提出的重复问题,因为还有其他一些方法和库可以做到这一点。我也很好奇,如果您不关心用户数据是否丢失,为什么还要在云上建立数据库,为什么不使用本地数据库? 似乎没有找到你的答案,你能不能在这里参考一下,我正在使用 firebase,因为当用户购买计划时,我在我的应用程序中提供对高级内容的访问,计划数量,内容都是从数据库中获取的,我正在使用它来推送通知 我想知道我在 3 个月前构建了我的应用程序,与我昨天构建的版本相比,它给了我不同的说法,有趣的是我什至没有重置我的手机并尝试检查从我朋友的设备上得到与我相同的结果(显示不同的 ssaid) 我查看了我正在查看的答案,似乎该库已停产,所以不妨试试这个library 以及查看dart packages。我会建议使用我可以看到的没有备份的设备 UID,例如电子邮件和密码登录是相当危险的,假设您将 UID 直接存储在数据库中,黑客可能会窃取所有这些 UID,除非加盐并且有可能获取其他用户的设备 ID。听着,走你认为对的,但这只是我的看法。【参考方案2】:这是获取设备唯一标识符的方法:
对于使用 unique_identifier 库获取 IMEI 的 Android:
// Add this dependency to pubspec.yaml
dev_dependencies:
unique_identifier: ^0.0.3
// code snippet to get the IMEI
String identifier = await UniqueIdentifier.serial;
对于 ios,Apple 不再允许您检索 IMEI,但您可以生成类似于 IMEI 的 UDID:
import 'package:device_info/device_info.dart';
final DeviceInfoPlugin deviceInfoPlugin = new DeviceInfoPlugin();
var data = await deviceInfoPlugin.iosInfo;
identifier = data.identifierForVendor;
【讨论】:
超时或设备重置时会改变吗?它在一生中也会改变吗?还是没有变化 不,恢复出厂设置后 IMEI 号码不会改变。由于 IMEI 号码是硬件的一部分,因此任何基于软件的重置都无法更改手机的 IMEI。 Crate,请不要忘记标记正确答案以供将来查看。 :) 好吧看起来很公平,但是当我搜索我是否有双卡手机时,我会得到 2 个 IMEI 我会在尝试这些解决方案后回到这篇文章。很高兴你们帮忙!!以上是关于使用唯一标识符flutter / android识别设备的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio (Windows) 中的 Flutter 错误:无法识别的选项:--add-opens