flutter如何获取设备ID

在Flutter开发中,我需要获取设备的唯一ID用于用户识别,但发现不同平台(Android/iOS)的获取方式不一致。尝试过使用device_info_plus插件,但Android返回的androidId可能为空,iOS的identifierForVendor在应用卸载后会变化。请问目前最可靠的跨平台设备ID获取方案是什么?是否需要考虑隐私政策限制?

2 回复

Flutter中获取设备ID可使用device_info_plus插件。

  1. 添加依赖到pubspec.yaml
  2. 导入并调用DeviceInfoPlugin()获取设备信息。
  3. Android通过androidInfo.id,iOS通过iosInfo.identifierForVendor获取。
    注意:不同平台和设备返回的ID可能不同。

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


在Flutter中获取设备唯一标识符可以通过以下方式实现:

推荐方法:使用 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;
}

注意事项:

  • Android: 获取的是 ANDROID_ID,设备恢复出厂设置后会改变
  • iOS: 获取的是 identifierForVendor,同一开发者的应用在同一设备上相同
  • 需要添加相应平台的权限(Android需要READ_PHONE_STATE权限)

使用示例:

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

这种方法相对稳定且跨平台兼容性好。

回到顶部