我有一个广告横幅与UIViewControllerRepresentable集成在swiftUI中,但我不知道添加adViewDidReceiveAd()这样的事件。我已经在https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit上学习了,但事件adViewDidReceiveAd从未启动
struct GADBannerViewController: UIViewControllerRepresentable {
func makeCoordinator() -> GADBannerViewController.Coordinator {
GADBannerViewController.Coordinator()
}
func makeUIViewController(context: Context) -> UIViewController {
let view = GADBannerView(adSize: kGADAdSizeBanner)
let viewController = UIViewController()
view.adUnitID = "ca-app-pub-3940256099942544/2934735716"
view.rootViewController = viewController
viewController.view.addSubview(view)
viewController.view.frame = CGRect(origin: .zero, size: kGADAdSizeBanner.size)
view.load(GADRequest())
return viewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
class Coordinator: NSObject, GADBannerViewDelegate {
func adViewDidReceiveAd(_ bannerView: GADBannerView){
print("AAAAAAAAA")
}
func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
print(error)
}
}
}
答案 0 :(得分:2)
import SwiftUI
import UIKit
import GoogleMobileAds
final class GADBannerViewController: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewController {
let view = GADBannerView(adSize: kGADAdSizeBanner)
let viewController = UIViewController()
view.adUnitID = "ca-app-pub-3940256099942544/2934735713"
view.rootViewController = viewController
view.delegate = viewController
viewController.view.addSubview(view)
viewController.view.frame = CGRect(origin: .zero, size: kGADAdSizeBanner.size)
view.load(GADRequest())
return viewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}
extension UIViewController: GADBannerViewDelegate {
public func adViewDidReceiveAd(_ bannerView: GADBannerView) {
print("ok ad")
}
public func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
print("fail ad")
print(error)
}
}
答案 1 :(得分:1)
我找到了解决方案,我在这里发布给其他人:
import SwiftUI
import UIKit
import GoogleMobileAds
final class GADBannerViewController: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewController {
let view = GADBannerView(adSize: kGADAdSizeBanner)
let viewController = UIViewController()
view.adUnitID = "ca-app-pub-3940256099942544/2934735713"
view.rootViewController = viewController
view.delegate = viewController
viewController.view.addSubview(view)
viewController.view.frame = CGRect(origin: .zero, size: kGADAdSizeBanner.size)
view.load(GADRequest())
return viewController
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}
extension UIViewController: GADBannerViewDelegate {
public func adViewDidReceiveAd(_ bannerView: GADBannerView) {
print("ok ad")
}
public func adView(_ bannerView: GADBannerView, didFailToReceiveAdWithError error: GADRequestError) {
print("fail ad")
print(error)
}
}