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

GoogleMobileAds 11.0.0:BannerView不兼容UIViewControllerRepresentable问题求助

GoogleMobileAds 11.0.0 问题解决指南

1. BannerView 不兼容 UIViewControllerRepresentable 协议,存在 updateUIViewController 仍提示需实现

  • 核心问题:GADBannerView是UIView子类,直接实现UIViewControllerRepresentable会导致协议关联类型不匹配;方法签名不符合协议要求也会触发报错。
  • 解决方案:
    • 不要让GADBannerView直接实现UIViewControllerRepresentable,而是创建结构体包装承载广告的UIViewController:
      struct AdBannerView: UIViewControllerRepresentable {
          typealias UIViewControllerType = BannerHostViewController
          
          func makeUIViewController(context: Context) -> BannerHostViewController {
              BannerHostViewController()
          }
          
          func updateUIViewController(_ vc: BannerHostViewController, context: Context) {
              // 根据业务需求更新广告视图,比如刷新广告
          }
      }
      
      class BannerHostViewController: UIViewController {
          private var bannerView: GADBannerView!
          
          override func viewDidLoad() {
              super.viewDidLoad()
              bannerView = GADBannerView(adSize: GADAdSizeBanner)
              bannerView.adUnitID = "你的广告单元ID"
              bannerView.rootViewController = self
              bannerView.load(GADRequest())
              
              view.addSubview(bannerView)
              bannerView.translatesAutoresizingMaskIntoConstraints = false
              NSLayoutConstraint.activate([
                  bannerView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
                  bannerView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
              ])
          }
      }
      
    • 检查updateUIViewController签名:必须严格匹配func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context),确保关联类型UIViewControllerType正确指向宿主ViewController。

2. 无法找到 kGADAdSizeBanner

  • 原因:GoogleMobileAds 11.0.0 重构了广告尺寸定义,原Objective-C风格的常量kGADAdSizeBanner已被替换为Swift枚举值GADAdSizeBanner。
  • 解决方案:直接使用GADAdSizeBanner替代,示例:
    let bannerView = GADBannerView(adSize: GADAdSizeBanner)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 06:22:46