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

升级Google-Mobile-Ads-SDK后iOS App崩溃:报错“GADMediaContent setDelegate”未识别选择器

解决升级Google Mobile Ads SDK后“GADMediaContent setDelegate”未识别选择器崩溃问题

这个崩溃的核心原因很明确:Google Mobile Ads SDK在7.32.0之后的版本中,彻底移除了GADMediaContent类的setDelegate:方法——你之前在旧版本里依赖的这个API已经被废弃并删除,调用它自然会触发"unrecognized selector sent to instance"的崩溃。

下面是具体的修复步骤和替代方案:

  • 第一步:定位代码中所有调用[GADMediaContent setDelegate:]或mediaContent.delegate = self的位置,这些就是崩溃的触发点。
  • 第二步:根据你使用的广告类型,替换为对应的新回调逻辑:
    • 如果你在用激励广告(GADRewardedAd)或插屏广告(GADInterstitialAd):媒体相关的事件(播放开始/结束/错误等)已经整合到广告自身的delegate协议中,比如GADRewardedAdDelegate新增了对应媒体事件的回调方法,直接通过广告delegate处理即可。
    • 如果你是直接使用GADMediaView:应该给GADMediaView设置delegate(遵循GADMediaViewDelegate协议),用这个来监听媒体播放的各类事件,而非给GADMediaContent设置delegate。

举个代码替换的例子:
旧版本代码(崩溃触发点):

GADMediaContent *mediaContent = [[GADMediaContent alloc] init];
[mediaContent setDelegate:self];
// 其他媒体内容配置

新版本替换为(以GADMediaView为例):

GADMediaView *mediaView = [[GADMediaView alloc] init];
mediaView.delegate = self; // 改用GADMediaView的delegate
mediaView.mediaContent = mediaContent;

同时,记得让你的类遵循GADMediaViewDelegate协议,并实现所需的回调方法,比如:

- (void)mediaViewDidStartPlayback:(GADMediaView *)mediaView {
    // 处理媒体开始播放逻辑
}

- (void)mediaViewDidEndPlayback:(GADMediaView *)mediaView {
    // 处理媒体结束播放逻辑
}

最后,建议清理Xcode的Build Folder(快捷键Cmd+Shift+K),重新安装SDK依赖,确保旧版本的二进制文件和缓存被彻底清除,避免残留问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 13:07:50