将 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)
...
}
如何将 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)
...
}