flutter如何获取设备id

在Flutter开发中,如何安全且合规地获取设备的唯一标识符(如Android ID或IDFA)?不同平台的获取方式是否有差异?需要注意哪些隐私政策或权限问题?求推荐可靠的插件或原生代码实现方案。

2 回复

Flutter中获取设备唯一ID可使用device_info_plus插件。
Android通过androidInfo.androidId获取,iOS通过iosInfo.identifierForVendor获取。
注意:不同平台ID规则不同,且可能为空或重置。

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


在Flutter中获取设备ID可以通过以下方法实现:

推荐方法:使用 device_info_plus 包

1. 添加依赖

pubspec.yaml 中添加:

dependencies:
  device_info_plus: ^9.0.0

2. 导入包

import 'package:device_info_plus/device_info_plus.dart';

3. 获取设备信息代码

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

4. 使用示例

String? deviceId = await getDeviceId();
print('设备ID: $deviceId');

注意事项:

  • Android: 获取的是 ANDROID_ID,可能为空或重置
  • iOS: 获取的是 identifierForVendor,同一开发者的应用在相同设备上相同
  • 需要添加相应平台的权限(Android可能需要READ_PHONE_STATE权限)

这是最常用且跨平台兼容性最好的方法。

回到顶部