Добавить баннер Admob в набор сообщений - PullRequest
0 голосов
/ 18 июня 2020

как я могу добавить баннер admob в 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 голосов
/ 18 июня 2020

Вам нужно позвонить 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)
    ...
}
...