UICollectionView集成中的HeyZap原生广告

时间:2016-07-05 11:33:04

标签: ios uicollectionview uicollectionviewcell native-ads heyzap

我正在尝试将HeyZap原生广告中介集成到我的UICollectionView中。 我使用的是使用IB构建的单元格,但是当我尝试将nativeAd.wrapperView分配给我自己在单元格中的wrapperView时,它只是不响应任何点击或手势。 这是我的代码:

cell.hzNativeAd = ...; //Here I assign HZMediatedNativeAd to my cell property
cell.hzNativeAd.presentingViewController = self;
cell.hzNativeAd.shouldShowFacebookAdChoicesView = NO;

//Saving frame, because when I assign HeyZap wrapperView to my UIView frame is 0
CGRect wrapperViewFrame = cell.wrapperView.frame;
cell.wrapperView = cell.hzNativeAd.wrapperView;
cell.wrapperView.frame = wrapperViewFrame;

/*Assigning all labels and images
...
...
...
 */

//Registering Views with HZMediatedNativeAdViewRegisterer
[cell.hzNativeAd registerViews:^(id<HZMediatedNativeAdViewRegisterer>registerer) {
     [registerer registerTitleView:cell.titleLabel tappable:YES];
     [registerer registerBodyView:cell.descriptionLabel tappable:YES];
     [registerer registerCallToActionView:cell.actionButton];
     [registerer registerIconView:cell.imageView tappable:YES];
     [registerer registerCoverImageView:cell.coverImageView tappable:YES];

从HeyZap文档(https://developers.heyzap.com/docs/ios_sdk_native_mediation#step-3-show-native-ads)我可以找到以编程方式执行的操作。但这样做会让我在iPad上测试时效果非常糟糕。我创建视图,而不是添加约束,然后注册这些视图,然后在准备重用时删除所有视图 - 所有这些都需要时间,我在iPad上有很多滞后。 HeyZap支持只是不回复...

所以也许有人也遇到过这个问题......或者我在以这种方式分配wrapperView时做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我是Heyzap的iOS工程师。让我首先为原生广告集成的复杂性道歉 - 在广告网络之间创建一致的界面真的很难,而且由于AdMob需要包装视图和注册视图,因此它必须至少是那么复杂。无论如何,这是我认为代码中的问题:

  1. 此行:<uses-permission android:name="android.permission.SEND_SMS" /> <uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 无效。这只是获取单元格的cell.wrapperView = cell.hzNativeAd.wrapperView;指针并更改其指向的内容,但它并未更改单元格的实际子视图 - 您需要在某个时刻将Heyzap包装器视图实际添加到视图层次结构中回应手势。这就是我可能做的事情:

    wrapperView
  2. (您可能希望将[cell.wrapperView removeFromSuperview]; // Temporarily remove your wrapper view from the view hierarchy, since when you load a new cell from a storyboard, it'll be a subview of the `contentView` property. cell.hzNativeAd.wrapperView.frame = cell.wrapperView.frame; [cell.contentView addSubview: cell.hzNativeAd.wrapperView]; [cell.hzNativeAd.wrapperView addSubview: cell.wrapperView]; 属性重命名为其他内容,以便将其从Heyzap中消除歧义。)

    至于wrapperView,你应该可以做这些事情:

    1. 从Heyzap包装器视图中删除您自己的包装器视图:prepareForReuse
    2. 从视图层次结构中删除Heyzap包装器视图:[self.wrapperView removeFromSuperview];
    3. [cell.hzNativeAd.wrapperView removeFromSuperview];您的原生广告引用:nil
    4. 致电超级:self.hzNativeAd = nil;
    5. 对此延迟回复表示歉意。这是上周一在美国的独立日,所以大多数Heyzap员工不在办公室。

      告诉我你是否还有其他问题;如有必要,我可以与你进行Skype聊天。