处理 Admob UICollectionView 上的事件
Posted
技术标签:
【中文标题】处理 Admob UICollectionView 上的事件【英文标题】:Handling Events On Admob UICollectionView 【发布时间】:2021-12-30 22:48:41 【问题描述】:对 Admob 来说相当陌生。我一直在尝试在 UICollectionView 上实施 AdMob 原生广告,但我几乎没有运气。我已经能够在单元格中加载和显示广告,但未注册事件,例如使用 GADNativeAdDelegate 进行查看或点击。这是到目前为止的代码:
// In main view controller
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "exampleCell", for: indexPath) as! exampleCell
let myItem = myItemList[indexPath.item]
if myItem is GADNativeAd
let nAd = myItems as! GADNativeAd
let nibView = Bundle.main.loadNibNamed("UnifiedNativeAdView", owner: nil, options: nil)?.first
let nativeAdView = nibView as! GADNativeAdView
// Prepare ad content
let nativeAd = nAd
// Add content to native view
(nativeAdView.headlineView as? UILabel)?.text = nativeAd.headline
nativeAdView.mediaView?.mediaContent = nativeAd.mediaContent
(nativeAdView.bodyView as? UILabel)?.text = nativeAd.body
nativeAdView.bodyView?.isHidden = nativeAd.body == nil
(nativeAdView.iconView as? UIImageView)?.image = nativeAd.icon?.image
nativeAdView.iconView?.isHidden = nativeAd.icon == nil
(nativeAdView.advertiserView as? UILabel)?.text = nativeAd.advertiser
nativeAdView.advertiserView?.isHidden = nativeAd.advertiser == nil
nativeAdView.callToActionView?.isUserInteractionEnabled = false
nativeAdView.nativeAd?.delegate = self
nativeAdView.nativeAd?.rootViewController = self
cell.addSubview(nativeAdView)
return cell
我的单元格是一个基本的 UICollectionViewCell,如下所示:
class exampleCell: UICollectionViewCell
override func awakeFromNib()
super.awakeFromNib()
我看过this answer,但它似乎不适用。
【问题讨论】:
【参考方案1】:在 cellForItemAt 委托中 试试这个 // 在添加新的之前从内容视图中删除以前的 GADBannerView。
for subview in reusableAdCell.contentView.subviews
subview.removeFromSuperview()
【讨论】:
以上是关于处理 Admob UICollectionView 上的事件的主要内容,如果未能解决你的问题,请参考以下文章
Unity3D - AdMob在Android中的回调造成崩溃的处理方式