flutter如何获取deviceid

在Flutter中如何获取设备的唯一标识符(DeviceID)?不同平台的实现方式是否有差异?使用device_info_plus插件获取的ID是否可靠?需要注意哪些隐私和政策合规问题?求推荐最佳实践方案。

2 回复

在Flutter中,可以使用device_info_plus插件获取设备ID。示例代码:

import 'package:device_info_plus/device_info_plus.dart';

String deviceId = '';
final deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
  deviceId = (await deviceInfo.androidInfo).id;
} else if (Platform.isIOS) {
  deviceId = (await deviceInfo.iosInfo).identifierForVendor ?? '';
}

更多关于flutter如何获取deviceid的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中获取设备唯一标识符(Device ID)可以通过第三方插件实现。推荐使用 device_info_plus 插件,它支持 Android 和 iOS 平台。

步骤:

  1. 添加依赖
    pubspec.yaml 文件中添加:

    dependencies:
      device_info_plus: ^9.0.0
    

    运行 flutter pub get 安装。

  2. 导入并获取设备信息

    import 'package:device_info_plus/device_info_plus.dart';
    
    Future<String?> getDeviceId() async {
      final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
      try {
        if (Platform.isAndroid) {
          AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
          return androidInfo.id; // 对应 Android 的 ANDROID_ID
        } else if (Platform.isIOS) {
          IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
          return iosInfo.identifierForVendor; // 对应 iOS 的 identifierForVendor
        }
      } catch (e) {
        print("获取设备 ID 失败: $e");
      }
      return null;
    }
    

注意事项:

  • AndroidandroidInfo.id 返回的是 ANDROID_ID,但不同版本或厂商设备可能不一致,且恢复出厂设置会重置。
  • iOSidentifierForVendor 在同一开发商应用间保持一致,但卸载所有应用后可能变化。
  • 权限:通常无需额外权限,但建议检查插件文档以确认最新要求。

替代方案:

如需更稳定的标识符,可结合其他信息(如序列号)或使用服务器生成 UUID 存储。

回到顶部