Flutter中advertising_id包为何返回全零Google广告ID?
问题分析与解决办法
为什么返回全零广告ID?
以下是常见的几种原因:
- 设备广告跟踪限制开启:如果设备开启了「限制广告跟踪」,系统会直接返回全零ID,这是Google的机制,不管权限是否配置正确。
- 设备缺少Google Play服务:广告ID依赖Google Play服务,若使用的模拟器没有搭载Google Play(比如纯Android镜像),或者物理设备的Google Play服务未正常更新,都会导致获取失败。
- 包配置或版本问题:
advertising_id包的版本过旧,或者项目中Google Play服务的依赖存在冲突,也可能引发这个问题。
Flutter中可行的获取方式
先排查基础问题
- 检查设备设置:打开设备「设置」→「隐私」→「广告」,关闭「限制广告跟踪」选项,重启应用后重试。
- 更换测试环境:使用搭载Google Play的模拟器镜像(比如Pixel系列API 30+带Google Play的版本),或用正常安装Google Play服务的物理设备测试。
- 更新依赖:在
pubspec.yaml中确保advertising_id使用最新稳定版,执行flutter pub get后重新构建项目。
官方替代方案(推荐)
如果advertising_id包仍有问题,建议使用Google官方的google_mobile_ads包,步骤如下:
- 在
pubspec.yaml中添加依赖:
dependencies: google_mobile_ads: ^2.4.0 # 替换为最新稳定版
- 初始化并获取广告ID:
import 'package:google_mobile_ads/google_mobile_ads.dart'; Future<String?> getAdvertisingId() async { await MobileAds.instance.initialize(); final info = await AdvertisingIdInfo.load(); return info.id; }
- 同样需要在
AndroidManifest.xml中添加权限:
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
内容的提问来源于stack exchange,提问作者Vitalii
相关产品推荐
相关产品推荐

