dart 通过使用唯一标识符flutter / android识别设备

szqfcxe2  于 11个月前  发布在  Flutter
关注(0)|答案(3)|浏览(160)

我的用例是我想唯一地标识我的用户设备,因为我想为他们提供订阅,不想使用任何类型的登录,而是使用一个唯一的标识符,我可以保存它在我的后端,所以即使用户卸载或重新安装我的应用程序,仍然能够访问内容。我也尝试过使用androidId(SSAID)但它可以改变应用程序登录更改或设备重置。我使用FireBase作为后端和前端Flutter。

nom7f22z

nom7f22z1#

您可以使用下面的库来查找设备的唯一ID:
Device ID library
另外,这是一个重复的question,所以请注意下次在提问之前搜索答案。
最后,我不完全确定你的项目的范围,但如果你保存用户数据,敏感或不Firebase上,登录的人与设备UID的可能是有问题的,例如在用户丢失手机的情况下,他们将无法恢复他们丢失的数据.就像我说的,我不知道你的项目的范围,但只是一些思考.
请让我知道如果你需要任何进一步的帮助!

yvfmudvl

yvfmudvl2#

以下是如何获取设备的唯一标识符:
对于使用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;

k10s72fa

k10s72fa3#

2023年答案

对于Android应用(尤其是已经使用Firebase的应用),Android认为Firebase安装ID(FID)是获取设备唯一标识符的最佳实践。大多数第三方应用不属于可以获取硬件标识符的应用类别。
但有一个例外:
如果运营商相关功能需要,则可以利用硬件标识符。
换句话说,如果您的应用使用设备的SMS功能,是默认拨号器,或者是系统应用,您可能能够获得像IMEI这样的硬件标识符。但是,这需要用户权限才能工作,并且这是一个比简单地点击权限消息上的“允许”更侵入性的过程,比如当应用想要发送通知时。AFAIK,如果您的应用无法提供与其他拨号器或短信应用竞争的短信功能,您可能需要考虑使用其他用户身份识别方法,例如in-app purchaseGoogle account linking

相关问题