我的用例是我想唯一地标识我的用户设备,因为我想为他们提供订阅,并且不想使用任何类型的登录,而是使用一个唯一标识符,我可以将其保存在我的后端,这样即使用户卸载或重新安装我的设备应用程序,仍然能够访问内容。我也曾尝试使用 androidId (SSAID),但它可以在应用程序登录更改或设备重置时更改。 我使用 firebase 作为后端并在前端使用 flutter。
这是获取设备唯一标识符的方法:
对于 Android 使用 unique_identifier 库获取 IMEI:
// 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;
对于 Android 应用程序(尤其是已经使用 Firebase 的应用程序),Android 认为 Firebase 安装 ID (FID) 是获取设备唯一标识符的最佳实践。大多数第三方应用程序不属于可以获得硬件标识符的应用程序类别。
有一个例外:
如果需要运营商相关功能,则可以使用硬件标识符。
换句话说,如果您的应用程序使用设备的短信功能,是默认拨号器,或者是系统应用程序,您也许能够获取像 IMEI 这样的硬件标识符。但是,这需要用户许可才能工作,并且与简单地在权限消息上点击“允许”(例如应用程序想要发送通知时)相比,这是一个更具侵入性的过程。 AFAIK,他们将不得不用你的替换他们的拨号器或短信应用程序。如果您的应用程序无法以与其他拨号器或短信应用程序竞争的方式提供短信功能,您可能需要考虑使用替代的用户识别方法,例如应用程序内购买或Google帐户链接.