You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter跨Android/iOS获取卸载后不变的唯一设备ID

解决Flutter中跨平台获取卸载后不变的设备ID问题

Android 平台解决方案

Android 上可通过以下两种可靠方式获取卸载后不变的ID:

  • Settings Secure Android ID:对应原生Settings.Secure.ANDROID_ID,Android 8.0+ 版本中,同一开发者签名的应用卸载重装后该ID保持不变,仅在恢复出厂设置、刷机或更换设备时才会变更。使用device_info_plus获取的代码示例:
    import 'package:device_info_plus/device_info_plus.dart';
    
    Future<String?> getAndroidId() async {
      final androidInfo = await DeviceInfoPlugin().androidInfo;
      return androidInfo.id;
    }
    
    注意:不同开发者签名的应用会获取到不同的ID,若需跨应用共享ID,此方案不适用。
  • MediaDrm UUID:这是硬件级别的唯一标识,基于设备的DRM模块生成,几乎不会变更(除非硬件损坏)。需要添加权限android.permission.DRM,需通过原生代码实现后与Flutter通信,device_info_plus未直接封装该接口。

iOS 平台解决方案

iOS 由于系统限制,没有完全永久不变的设备ID,但可通过以下方式实现卸载后持久化:

  • Keychain 存储自定义UUID:生成一个随机UUID,存储到iOS的Keychain中(Keychain数据不受应用卸载影响)。卸载重装应用后,先尝试从Keychain读取,若不存在则重新生成并存储。可使用flutter_keychain包实现:
    import 'package:flutter_keychain/flutter_keychain.dart';
    import 'package:uuid/uuid.dart';
    
    Future<String> getPersistentDeviceId() async {
      String? storedId = await FlutterKeychain.get(key: 'persistent_device_id');
      if (storedId != null) return storedId;
      
      String newId = const Uuid().v4();
      await FlutterKeychain.put(key: 'persistent_device_id', value: newId);
      return newId;
    }
    
  • IDFV(Identifier for Vendor):同一开发者账号下的所有应用共享此ID,但若用户卸载该账号下的所有应用后重装,IDFV会变更。使用device_info_plus获取:
    import 'package:device_info_plus/device_info_plus.dart';
    
    Future<String?> getIosIdfv() async {
      final iosInfo = await DeviceInfoPlugin().iosInfo;
      return iosInfo.identifierForVendor;
    }
    
    此方案适合不需要完全永久不变,仅需同一厂商应用间关联的场景。

通用注意事项

  • 避免使用Advertising ID(IDFA):用户可手动重置该ID,这可能是你之前使用第三方包时出现ID每日变化的原因。
  • 合规性:Android 13+ 访问ANDROID_ID无需特殊权限,但需遵守隐私政策;iOS 使用Keychain或IDFV需在App Store隐私说明中如实披露数据用途。
  • 服务器关联:若需绝对可靠的设备标识,建议将获取到的本地ID与服务器绑定,即使本地ID因特殊情况变更,也可通过服务器的关联记录识别设备。

内容的提问来源于stack exchange,提问作者Hassan Gujjar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:02:13