Ios UICollectionView集成中的HeyZap本地广告

Ios UICollectionView集成中的HeyZap本地广告,ios,uicollectionview,uicollectionviewcell,native-ads,heyzap,Ios,Uicollectionview,Uicollectionviewcell,Native Ads,Heyzap,我正在尝试将HeyZap Native Ads中介集成到我的UICollectionView中。 我使用的是用IB构建的单元格,但当我尝试将nativeAd.wrapperView分配给我自己的单元格中的wrapperView时,它不会响应任何点击或手势。 这是我的密码: cell.hzNativeAd = ...; //Here I assign HZMediatedNativeAd to my cell property cell.hzNativeAd.presentingViewContr

我正在尝试将HeyZap Native Ads中介集成到我的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];
cell.hznativeead=//在这里,我将HzMediatedNativeHead分配给我的cell属性
cell.hznativeead.presentingViewController=self;
cell.hznaviead.shouldShowFacebookAdChoicesView=否;
//正在保存帧,因为当我将HeyZap wrapperView指定给UIView帧时,该帧为0
CGRect wrapperViewFrame=cell.wrapperView.frame;
cell.wrapperView=cell.hznativeead.wrapperView;
cell.wrapperView.frame=wrapperViewFrame;
/*指定所有标签和图像
...
...
...
*/
//向HzMediatedNativeReadViewRegisterer注册视图
[cell.hznativeead registerViews:^(idregister){
[注册表人注册表项视图:cell.titleLabel tappable:是];
[RegisterRegisterBodyView:cell.descriptionLabel tappable:YES];
[RegisterRegisterCallToActionView:cell.actionButton];
[RegisterRegistericonView:cell.imageView tappable:YES];
[RegisterRegisterOverImageView:cell.coverImageView tappable:YES];
从HeyZap文档()中,我可以找到如何以编程方式进行测试。但在iPad上进行测试时,这样做会给我带来非常糟糕的结果。我创建视图,而不是添加约束,然后注册这些视图,然后在准备重用时删除所有视图-所有这些都需要时间,而且我在iPad上有很多延迟。HeyZap支持只是不回复

所以可能有人也遇到了这个问题……或者我只是在这样分配wrapperView时做错了什么


感谢您的帮助!

我是Heyzap的iOS工程师。首先,让我为本机广告集成的复杂性道歉。在广告网络之间创建一致的接口确实很困难,而且由于AdMob需要包装视图和注册视图,它至少必须如此复杂。无论如何,我认为这里有一些问题您代码中的ems:

  • 这一行:
    cell.wrapperView=cell.hznativeead.wrapperView;
    无法正常工作。这只是获取单元格的
    wrapperView
    指针并更改其指向的内容,但它并没有更改单元格的实际子视图。您需要在某个点将Heyzap包装视图实际添加到视图层次结构中,以使其恢复我可能会这样做:

    [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];
    
  • (您可能希望将
    wrapperView
    属性重命名为其他属性,以消除它与Heyzap属性之间的歧义)

    prepareforeuse
    而言,您应该能够做到以下几点:

  • 从Heyzap包装视图中删除您自己的包装视图:
    [self.wrapperView removeFromSuperview];
  • 从视图层次结构中删除Heyzap包装视图:
    [cell.hznativeead.wrapperView removeFromSuperview];
  • nil
    out您的本地广告参考:
    self.hznativeead=nil;
  • 调用super:
    [super prepareforeuse];
  • 很抱歉延迟回复。上周一是美国独立日,所以大部分Heyzap员工都不在办公室


    如果您还有任何问题,请告诉我;如果有必要,我可以与您进行Skype聊天。

    我是Heyzap的iOS工程师。首先,我要为本机广告集成的复杂性道歉,在广告网络之间创建一致的接口确实很困难,而且由于AdMob需要包装器视图和注册视图,因此我t必须至少有那么复杂。无论如何,我认为您的代码中存在以下问题:

  • 这一行:
    cell.wrapperView=cell.hznativeead.wrapperView;
    无法正常工作。这只是获取单元格的
    wrapperView
    指针并更改其指向的内容,但它并没有更改单元格的实际子视图。您需要在某个点将Heyzap包装视图实际添加到视图层次结构中,以使其恢复我可能会这样做:

    [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];
    
  • (您可能希望将
    wrapperView
    属性重命名为其他属性,以消除它与Heyzap属性之间的歧义)

    prepareforeuse
    而言,您应该能够做到以下几点:

  • 从Heyzap包装视图中删除您自己的包装视图:
    [self.wrapperView removeFromSuperview];
  • 从视图层次结构中删除Heyzap包装视图:
    [cell.hznativeead.wrapperView removeFromSuperview];
  • nil
    out您的本地广告参考:
    self.hznativeead=nil;
  • 调用super:
    [super prepareforeuse];
  • 很抱歉延迟回复。上周一是美国独立日,所以大部分Heyzap员工都不在办公室

    如果您还有任何问题,请告诉我;如果必要,我可以与您进行Skype聊天