将 Admob 横幅添加到 messagekit

Add Admob banner to messagekit

如何将 admob 横幅添加到 messagekit 的 messageviewcontroller?

我试过了。广告已加载但不可见。

我想将横幅添加到视图顶部。

请帮忙。

final class ChatViewController: MessagesViewController, MessagesDataSource {

override func viewDidLoad() {
    messagesCollectionView = MessagesCollectionView(frame: .zero, collectionViewLayout: CustomMessagesFlowLayout())
    messagesCollectionView.register(CustomMessageKitCell.self)
    // In this case, we instantiate the banner with desired ad size.
    bannerView = GADBannerView(adSize: kGADAdSizeBanner)

    bannerView.adUnitID = "ca-app-pub-40..."
    bannerView.rootViewController = self
    bannerView.load(GADRequest())
    bannerView.delegate = self
    addBannerViewToView(bannerView)
    ...
}

var bannerView: GADBannerView!

func addBannerViewToView(_ bannerView: GADBannerView) {
 bannerView.translatesAutoresizingMaskIntoConstraints = false
 view.addSubview(bannerView)
 view.addConstraints(
   [NSLayoutConstraint(item: bannerView,
                       attribute: .top,
                       relatedBy: .equal,
                       toItem: view.safeAreaLayoutGuide,
                       attribute: .top,
                       multiplier: 1,
                       constant: 0),
    NSLayoutConstraint(item: bannerView,
                       attribute: .centerX,
                       relatedBy: .equal,
                       toItem: view,
                       attribute: .centerX,
                       multiplier: 1,
                       constant: 0)
   ])
}
...
}

您需要在 添加任何子视图之前调用 super.viewDidLoad() (我不知道您是否调用它,但它可能在 ... 最后)。 MessageKit 使用 viewDidLoad 将 MessagesCollectionView 添加到视图层次结构中,因此如果您在之后调用 super,则您的横幅视图将位于 MessagesCollectionView 下方。在这种情况下,由于您正在使用自定义布局实例化 MessagesCollectionView,因此您需要在实例化该视图之后但在添加任何子视图之前调用 super,如下所示:

override func viewDidLoad() {
    messagesCollectionView = MessagesCollectionView(frame: .zero, collectionViewLayout: CustomMessagesFlowLayout())
    super.viewDidLoad() // <-- Add this
    messagesCollectionView.register(CustomMessageKitCell.self)
    // In this case, we instantiate the banner with desired ad size.
    bannerView = GADBannerView(adSize: kGADAdSizeBanner)

    bannerView.adUnitID = "ca-app-pub-40..."
    bannerView.rootViewController = self
    bannerView.load(GADRequest())
    bannerView.delegate = self
    addBannerViewToView(bannerView)
    ...
}