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

Android SDK 29+下合规获取唯一设备ID的最佳实践

不违反Google Play政策的Android设备唯一标识最佳实践

一、优先使用广告ID(Advertising ID)

  • 这是Google官方推荐的用于广告投放、用户归因场景的标识,无需特殊权限,在Android SDK 29+环境下可正常获取。
  • 注意:用户可在系统设置中重置或禁用广告ID,因此代码中需处理ID为null的情况。
  • Flutter中通过device_info_plus获取的示例:
    import 'package:device_info_plus/device_info_plus.dart';
    
    Future<String?> getAdvertisingId() async {
      final androidDeviceInfo = await DeviceInfoPlugin().androidInfo;
      return androidDeviceInfo.advertisingId;
    }
    

二、生成应用内专属唯一标识

  • 若无需跨应用的设备级标识,可自行生成UUID并存储在应用私有存储(如SharedPreferences)中。
  • 该标识仅属于当前应用,应用卸载后会丢失,完全符合隐私政策要求,不会关联设备的全局信息。
  • Flutter实现示例:
    import 'package:shared_preferences/shared_preferences.dart';
    import 'package:uuid/uuid.dart';
    
    Future<String> getAppLocalUniqueId() async {
      final prefs = await SharedPreferences.getInstance();
      String? localId = prefs.getString('app_local_unique_id');
      if (localId == null) {
        localId = const Uuid().v4();
        await prefs.setString('app_local_unique_id', localId);
      }
      return localId;
    }
    

三、关联用户账号标识(如有登录功能)

  • 如果应用包含用户登录模块,可使用用户的Google账号ID(或其他授权账号ID)作为唯一标识。
  • 这种方式完全合规,因为标识绑定的是用户账号而非设备本身,且需用户主动授权登录。

需避免的方案

  • 禁止尝试获取IMEI、MEID、Serial Number等硬件标识:这些需要READ_PRIVILEGED_PHONE_STATE权限,普通应用无法获取,且违反Google Play隐私政策,会导致应用审核被拒。
  • 不再依赖AndroidID:从Android SDK 29开始,普通应用获取AndroidID会返回null,且Google Play政策不鼓励使用该标识进行用户追踪。

内容的提问来源于stack exchange,提问作者Alifa Al Farizi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:57:28