我正在尝试将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时做错了什么?
感谢您的帮助!
答案 0 :(得分:0)
我是Heyzap的iOS工程师。让我首先为原生广告集成的复杂性道歉 - 在广告网络之间创建一致的界面真的很难,而且由于AdMob需要包装视图和注册视图,因此它必须至少是那么复杂。无论如何,这是我认为代码中的问题:
此行:<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
(您可能希望将[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
,你应该可以做这些事情:
prepareForReuse
[self.wrapperView removeFromSuperview];
[cell.hzNativeAd.wrapperView removeFromSuperview];
您的原生广告引用:nil
。self.hzNativeAd = nil;
对此延迟回复表示歉意。这是上周一在美国的独立日,所以大多数Heyzap员工不在办公室。
告诉我你是否还有其他问题;如有必要,我可以与你进行Skype聊天。