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

AdMob原生广告mediaContent非空但MediaView视频不显示问题

AdMob原生广告媒体区域空白问题修复

我已在应用中成功接入AdMob原生广告,但媒体内容区域的视频无法正常展示,即使mediaContent对象不为空,对应位置仍显示空白区域。我不确定该问题是否仅在应用上架应用商店、使用正式广告ID时才会正常展示,目前我已尝试使用正式广告单元ID测试,问题仍存在。

问题截图

问题原因&修复方案

这个问题和应用是否上架、是否使用正式广告ID没有关系,是代码实现中遗漏了AdMob必填配置、存在逻辑错误导致的,按以下步骤修改即可:

  • 遗漏MediaView与NativeAdView的绑定
    这是导致媒体区域空白的核心原因。你目前仅调用了setMediaContent方法给MediaView传入了媒体内容对象,但AdMob SDK要求必须将MediaView实例注册到NativeAdView中,否则不会触发媒体内容渲染。在媒体内容赋值的代码块中补充如下代码,且必须保证这行代码在setNativeAd调用前执行:
    binding.nativeAdView.mediaView = binding.adMedia
    
  • 正文文本赋值逻辑错误
    你在给广告正文TextView赋值时,错误传入了标题变量,虽然这个问题不会直接导致媒体区域空白,但会造成广告内容显示异常,将对应代码修改为:
    if (body.isNullOrEmpty()) {
        binding.adBody.visibility = INVISIBLE
    } else {
        binding.adBody.visibility = View.VISIBLE
        binding.adBody.text = body
    }
    
  • MediaView固定高度导致素材适配失败
    你当前给MediaView写死了175dp的固定高度,当返回的视频/图片素材宽高比和固定高度不匹配时,SDK会放弃渲染媒体内容。将布局中MediaView的高度改为wrap_content即可,SDK会自动根据返回素材的宽高比计算适配的渲染高度:
    <com.google.android.gms.ads.nativead.MediaView
        android:id="@+id/ad_media"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="5dp" />
    
  • 注意广告素材类型的差异
    并非所有原生广告都包含视频素材,可通过mediaContent.hasVideoContent()判断当前返回的广告是否带视频内容,如果返回false,MediaView会自动渲染广告主图,无需额外处理。你当前使用的ca-app-pub-3940256099942544/1044960115是AdMob官方专门返回视频素材的测试广告单元ID,修复完上述问题后即可正常看到视频播放效果。

实现优化建议

  • 不要在RecyclerView的ViewHolder绑定方法(即你当前的bindAdData方法)中每次绑定都新建AdLoader请求广告,会造成重复请求、广告资源浪费、内存泄漏问题。建议提前预加载广告缓存,绑定视图时直接传入已加载完成的NativeAd对象渲染即可。
  • 所有广告对应的视图控件(图标、标题、正文、CTA按钮、评分栏、广告主名称、价格、商店信息、MediaView)都必须注册到NativeAdView对应的属性中,否则不仅可能出现渲染异常,还会违反AdMob平台政策,存在账号受限风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 12:48:15