在 UICollectionView 中滚动时 Admob Native Expess Ads 块

Posted

技术标签:

【中文标题】在 UICollectionView 中滚动时 Admob Native Expess Ads 块【英文标题】:Admob Native Expess Ads blocks while scrolling in UICollectionView 【发布时间】:2016-06-15 22:24:36 【问题描述】:

我目前在 UICollectionViewCell 中配置了 Admob Native Express Ad (GADNativeExpressAdView)。

我使用故事板通过添加一个空视图并将 GADNativeExpressAdView 类分配给它来设置它。 一切正常加载,例如,每 10 个单元格显示一个广告。

问题:用户第一次打开应用并开始向下滚动单元格列表时,当他们到达广告单元格时,滚动会阻塞,直到“构建”原生广告。完成后,滚动继续。然后,广告可能需要一点时间(1-2 秒)来加载广告请求。

加载请求似乎不是罪魁祸首。 我还以编程方式设置了广告,它似乎主要是在我第一次将广告视图添加为单元格的子视图时挂起

假设广告应该第二次出现在单元格 #20、#30 等中(之后每隔一个),滚动不会中断。它只发生在第一个。

任何关于如何解决此问题的想法将不胜感激。这是 GADNativeExpressAdView 本身的问题吗?

谢谢。

AdCollectionViewCell.Swift

class AdCollectionViewCell: UICollectionViewCell 

    @IBOutlet var intercellBanner: GADNativeExpressAdView!

    override func awakeFromNib() 
        super.awakeFromNib()

        let request = GADRequest()
        request.testDevices = [kGADSimulatorID]
        self.intercellBanner.loadRequest(request)
    

    override func prepareForReuse() 
        super.prepareForReuse()

        let request = GADRequest()
        request.testDevices = [kGADSimulatorID]
        self.intercellBanner.loadRequest(request)

    

【问题讨论】:

您已经为 GADNativeExpressAdView 创建了 IBOutlet。那么 Storyboard 文件中的内容是什么?是简单的 UIView 还是 UICollectionView.. 请回复。 嘿,我已经不再参与这个项目了。它是一个自定义单元格,带有一个给定类 GADNativeExpressAdView 的 UIView。更新我的 Xcode/Simulator 后,该块消失了。在设备上测试时没有发生这种情况。 【参考方案1】:

我用 GCD 异步块包裹了正在加载请求的行,看起来这种方法解决了滚动问题。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 
    view.nativeExpressAdView.loadRequest(request)
)

【讨论】:

【参考方案2】:

GitHub 存储库中有一个未解决的问题,还没有答案:S

https://github.com/googleads/googleads-mobile-ios-examples/issues/24

【讨论】:

以上是关于在 UICollectionView 中滚动时 Admob Native Expess Ads 块的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 中水平滚动的单元格消失

UICollectionView 状态恢复:自定义滚动位置

滚动到特定索引 UICollectionView

UICollectionView 在滚动时重新加载错误的图像

uicollectionview 可重用单元格图像在滚动时加载

防止 UICollectionView 中每个 UICollectionViewCell 中的内容在我滚动时发生变化?