【问题标题】:Google Admob banner ads are not working in swiftuiGoogle Admob 横幅广告在 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文档很难实现这个新的变化。

【问题讨论】:

标签: ios swift swiftui admob


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多