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

Swift4中如何在ScrollView配置AdMob?iOS广告不显示问题求助

问题1:如何在Swift4的ScrollView中配置AdMob?

在ScrollView里集成AdMob Banner广告的核心是做好广告视图的布局适配,确保它能被正常展示或滚动到,具体步骤如下:

  • 1. 前期准备:先通过CocoaPods导入Google-Mobile-Ads-SDK,或者手动添加框架。iOS14及以上版本,必须在Info.plist中配置GADApplicationIdentifier键,值填你的AdMob应用ID。

  • 2. 声明并配置Banner视图:让你的ViewController遵守GADBannerViewDelegate协议,方便监听广告加载状态;同时声明Banner视图并指定标准尺寸:

    class MainVC: UIViewController, UIScrollViewDelegate, UISearchBarDelegate, UITextFieldDelegate, GADBannerViewDelegate {
        let myBanner = DFPBannerView(adSize: kGADAdSizeBanner) // 直接用标准Banner尺寸
        @IBOutlet weak var scrollView: UIScrollView! // 提前关联ScrollView的IBOutlet
        
        // 其他代码...
    }
    
  • 3. 把Banner加到ScrollView并调整布局:在viewDidLoad里,将Banner添加到ScrollView,并根据现有内容的位置调整Banner的frame,同时更新ScrollView的contentSize,保证广告能被滚动到:

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // Banner基础配置
        myBanner.rootViewController = self
        myBanner.adUnitID = "你的AdUnitID" // 测试阶段建议用官方测试ID:ca-app-pub-3940256099942544/2934735716
        myBanner.delegate = self
        
        // 把Banner放在ScrollView现有内容的底部
        let bannerY = scrollView.contentSize.height
        myBanner.frame = CGRect(x: 0, y: bannerY, width: view.bounds.width, height: myBanner.frame.height)
        scrollView.addSubview(myBanner)
        
        // 更新ScrollView内容高度,容纳Banner
        scrollView.contentSize = CGSize(width: view.bounds.width, height: bannerY + myBanner.frame.height)
        
        // 加载测试广告
        let request = GADRequest()
        request.testDevices = [kGADSimulatorID] // 模拟器测试,真实设备需替换为对应设备ID
        myBanner.load(request)
    }
    
  • 4. 监听广告状态(推荐):实现代理方法,方便排查加载失败的原因:

    func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
        print("广告加载成功!")
    }
    
    func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
        print("广告加载失败:\(error.localizedDescription)")
    }
    

问题2:iOS中设置AdMob后广告无法显示的排查与修复

看了你贴的代码,广告不显示主要有几个关键问题,我帮你逐一修复并说明:

核心问题分析:

  1. Banner未加入视图层级:你创建了myBanner但没把它加到scrollView或主视图上,广告视图根本不在界面里,自然看不到;
  2. 未设置Banner的位置和大小:没有给myBanner指定frame或约束,系统不知道该把它放在哪里、多大;
  3. 注释了代理://myBanner.delegate = self导致你无法监听广告的成功/失败状态,没法排查具体原因;
  4. 可能缺少Info.plist配置:iOS14+必须添加GADApplicationIdentifier,否则广告无法加载。

修改后的完整代码:

class MainVC: UIViewController, UIScrollViewDelegate, UISearchBarDelegate, UITextFieldDelegate, GADBannerViewDelegate {
    let myBanner = DFPBannerView(adSize: kGADAdSizeBanner)
    @IBOutlet weak var scrollView: UIScrollView! // 确保已关联ScrollView的IBOutlet
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let request = GADRequest()
        request.testDevices = [kGADSimulatorID] // 模拟器测试,真实设备替换为设备ID
        
        // 打开代理,监听加载状态
        myBanner.delegate = self
        myBanner.rootViewController = self
        // 测试用官方测试ID,避免真实ID测试违规
        myBanner.adUnitID = "ca-app-pub-3940256099942544/2934735716"
        // 上线前替换为你的真实ID:"ca-app-pub-7025295311419616/6321740358"
        
        // 添加Banner到ScrollView并设置位置
        let bannerY = scrollView.contentSize.height
        myBanner.frame = CGRect(x: 0, y: bannerY, width: view.bounds.width, height: myBanner.frame.height)
        scrollView.addSubview(myBanner)
        
        // 更新ScrollView内容大小,确保Banner能被滚动到
        scrollView.contentSize = CGSize(width: view.bounds.width, height: bannerY + myBanner.frame.height)
        
        // 加载广告
        myBanner.load(request)
    }
    
    // 广告加载成功回调
    func bannerViewDidReceiveAd(_ bannerView: GADBannerView) {
        print("广告加载成功🎉")
    }
    
    // 广告加载失败回调,打印错误信息排查
    func bannerView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: Error) {
        print("广告加载失败❌:\(error.localizedDescription)")
    }
    
    // 你的其他代理方法...
}

额外排查建议:

  • 使用测试ID:测试阶段一定要用AdMob官方提供的测试AdUnitID,避免用真实ID导致账户违规;
  • 检查网络:确保测试设备/模拟器网络正常,广告需要联网加载;
  • 设备ID添加:如果用真实设备测试,需要把设备ID添加到request.testDevices中,否则可能无法加载测试广告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:29:02