将Admob横幅添加到messagekit

时间:2020-06-17 23:03:17

标签: ios swift admob 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)
   ])
}
...
}

1 个答案:

答案 0 :(得分: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)
    ...
}