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 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 中的 Google AdMob 横幅事件集成