Google Admob 横幅广告在 swiftui 中不起作用

Posted

技术标签:

【中文标题】Google Admob 横幅广告在 swiftui 中不起作用【英文标题】:Google Admob banner ads are not working in swiftui 【发布时间】:2021-06-07 11:26:30 【问题描述】:

我在我的 SwiftUI 应用程序中将 Google-Mobile-Ads-SDK v-7* 更新为 v-8*。更新后,我在表示横幅广告时遇到了这些错误。

我的代码是

struct GADBannerViewControllerForSpeedometer: UIViewControllerRepresentable 
func makeUIViewController(context: Context) -> UIViewController 
    
    
    let view = GADBannerView(adSize: kGADAdSizeBanner) // *Error: Cannot find 'GADBannerView' in scope*
    let viewController = UIViewController()
    //https://developers.google.com/admob/android/test-ads#sample_ad_units
    view.adUnitID = "ca-app-pub-3940256099942544/2934735716"
    view.rootViewController = viewController
    viewController.view.addSubview(view)
    viewController.view.frame = CGRect(origin: .zero, size: kGADAdSizeBanner.size) // *Error: Cannot find 'kGADAdSizeBanner' in scope*
    view.load(GADRequest()) // *Error: Cannot find 'GADRequest' in scope*
    return viewController


func updateUIViewController(_ uiViewController: UIViewController, context: Context)  

我没有找到任何解决方案,其实google文档很难实现这个新的变化。

【问题讨论】:

您是否在顶部添加了import 语句? 是的。但不工作 GoogleMobileAds import?你在使用 Cocoapods 吗?如果是这样,您使用的是工作区文件还是项目文件? developers.google.com/admob/ios/migration 您尝试过这里提供的解决方案吗? ***.com/questions/57641603/… 【参考方案1】:
final class BannerVC: UIViewControllerRepresentable  
        
        init(size: CGSize) 
            self.size = size
        
        var size: CGSize

        func makeUIViewController(context: Context) -> UIViewController 
            let view = GADBannerView(adSize: GADAdSizeFromCGSize(size))
            let viewController = UIViewController()
            view.adUnitID = "..."
            view.rootViewController = viewController
            viewController.view.addSubview(view)
            viewController.view.frame = CGRect(origin: .zero, size: size)
            
            
            ATTrackingManager.requestTrackingAuthorization(completionHandler:  status in
                let gadRequest = GADRequest()
                DispatchQueue.main.async 
                    gadRequest.scene = UIApplication.shared.connectedScenes.first as? UIWindowScene
                
                view.load(gadRequest)
            )
            return viewController
        
        func updateUIViewController(_ uiViewController: UIViewController, context: Context) 
    

在需要的地方实施横幅

BannerVC(size: CGSize(width: UIScreen.main.bounds.width, height: 60))
        .frame(width: UIScreen.main.bounds.width,
               height: 60,
               alignment: .center)

【讨论】:

以上是关于Google Admob 横幅广告在 swiftui 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Google Admob原生广告

AdMob 横幅广告未显示 Swift 3

无法显示 AdMob 横幅

SwiftUI 中的 Google AdMob 横幅事件集成

Google AdMob 干扰 SwiftUI 中的摇动手势

我可以在同一活动中显示 admob 原生广告和 admob 横幅广告吗?