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

Unity应用中激励广告曾正常运行,如今加载失败求解决方案

解决Unity激励广告加载错误(INVALID_ARGUMENT)的方案

核心排查与修复步骤

1. 核对Unity后台广告单元配置

  • 登录Unity Gaming Services后台,进入对应项目的Monetization板块,确认iOS平台下的激励广告单元ID完全为Rewarded_iOS——注意大小写、首尾空格这类细节,哪怕一个空格都会导致匹配失败。
  • 确认该广告单元处于启用状态,未被禁用或归档。
  • 再次核对项目iOS平台的Game ID,确保和代码初始化时使用的ID完全一致。

2. 验证代码平台判断逻辑

在Awake方法中添加日志,确认UNITY_IOS宏是否正确触发:

void Awake()
{
    // Get the Ad Unit ID for the current platform:
#if UNITY_IOS
    _adUnitId = _iOSAdUnitId;
    Debug.Log("当前平台为iOS,使用的AdUnitId:" + _adUnitId);
#elif UNITY_ANDROID
    _adUnitId = _androidAdUnitId;
    Debug.Log("当前平台为Android,使用的AdUnitId:" + _adUnitId);
#elif UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
    _adUnitId = _androidAdUnitId;
    Debug.Log("当前平台为Mac,使用的AdUnitId:" + _adUnitId);
#endif
}

运行iOS真机或模拟器,查看日志输出的AdUnitId是否为Rewarded_iOS,排除宏判断失效导致的ID错误。

3. 检查Ads初始化时机

代码注释提到初始化在其他脚本完成,需确认:

  • 初始化操作必须在LoadAd调用之前执行,且初始化时传入的是iOS平台对应的正确Game ID。
  • 添加初始化成功/失败的日志,确保初始化流程正常:
Advertisement.Initialize(gameId, testMode, (initializationState, error) =>
{
    if (error != null)
    {
        Debug.Log("Ads初始化失败:" + error);
    }
    else
    {
        Debug.Log("Ads初始化成功,状态:" + initializationState);
        // 仅在初始化成功后调用LoadAd
    }
});

4. 清理缓存与同步配置

  • 删除Unity项目的Library文件夹,重新导入Ads 4.4.2包,避免旧缓存干扰。
  • 修改后台广告单元配置后,等待10-15分钟让配置同步到广告服务器,再进行测试。
  • 开启测试模式(初始化时设置testMode = true),用测试广告验证配置是否正常,排除填充问题的干扰。

5. 代码细节优化

  • 调整OnUnityAdsShowComplete方法中移除监听的逻辑,避免仅在广告完成时才移除:
public void OnUnityAdsShowComplete(string adUnitId, UnityAdsShowCompletionState showCompletionState)
{
    if (adUnitId.Equals(_adUnitId) && showCompletionState.Equals(UnityAdsShowCompletionState.COMPLETED))
    {
        // 奖励发放逻辑...
        Advertisement.Load(_adUnitId, this); 
    }
    // 无论广告是否完成,都移除监听,防止重复绑定
    _showAdButton.onClick.RemoveListener(ShowAd);
}
  • 在LoadAd中增加空值判断,避免无效请求:
public void LoadAd()
{
    if(string.IsNullOrEmpty(_adUnitId))
    {
        Debug.LogError("AdUnitId为空,无法加载广告");
        return;
    }
    Debug.Log("Loading Ad: " + _adUnitId);
    Advertisement.Load(_adUnitId, this);
}

最后尝试

如果以上步骤都无效,建议在Unity后台创建一个新的iOS激励广告单元,替换代码中的_iOSAdUnitId后重新测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 06:45:36