Unity GoogleMobileAds初始化报错:string无法转换为对应Action委托类型
问题原因
这个报错是因为你使用的Google Mobile Ads Unity SDK 版本≥8.0.0,官方调整了MobileAds.Initialize()方法的参数签名:
- 旧版本(v7及以下):支持直接传入appId字符串作为参数
- 新版本(v8及以上):不再允许在Initialize方法中传入appId,参数改为接收初始化完成的回调委托
System.Action<GoogleMobileAds.Api.InitializationStatus>
解决步骤
- 第一步:完成appId全局配置
打开Unity编辑器顶部菜单Assets > Google Mobile Ads > Settings,在对应Android和iOS的输入框中填入你的AdMob应用ID,配置后SDK会自动把ID写入打包后的AndroidManifest.xml和Info.plist中,不需要在代码里手动传递。 - 第二步:修改初始化代码
把原来的MobileAds.Initialize(appId);替换为对应版本的调用逻辑:// 直接传入初始化完成的回调即可 MobileAds.Initialize((InitializationStatus initStatus) => { // 可在此处添加初始化完成后的逻辑,比如加载各类型广告 Debug.Log("AdMob SDK 初始化完成"); }); - 如果你不需要监听初始化结果,也可以直接传空回调:
MobileAds.Initialize(_ => {});
补充说明
如果暂时不想调整调用逻辑,可以回退Google Mobile Ads SDK到v7及以下版本,但更推荐使用官方新版配置方式,避免后续出现兼容性问题。
内容的提问来源于stack exchange,提问作者edy
相关产品推荐
相关产品推荐

