Нативная реклама не регистрирует клики
Я создаю библиотеку для Google Native Ads, и с ее помощью я создаю два типа шаблонов: маленький и средний, оба типа GADUnifiedNativeAdView
. Когда я установилGADUnifiedNativeAd
в свойстве nativeAd шаблона он может принимать запись Impression и AdChoice, но щелчок не работает, он не перенаправляет ни в AppStore в случае приложений или игр, ни в сафари. Я тестировал то же самое, что и Google в своем примере кода, который должен создавать XIB в проекте приложения для использования, и он работает, но не в lib.
- ViewController, который создает экземпляр шаблона объявления.
private func createViewNative(){
let viewNative = GADTMediumTemplateView()
view.addSubview(viewNative)
viewNative.setContraintsAd(viewReference: view, leading: 0, trailling: 0, top: 90, botton: nil)
AdsMobillsNative.shareInstance.loadAdsNative(fromController: self, viewTemplate: viewNative, completion: nil)
}
- Способ загрузки объявления.
public func loadAdsNative(fromController: UIViewController, viewTemplate: UIView, completion: ((Bool) -> Void)?){
AdsMobillsNative.fromController = fromController
self.viewTemplate = viewTemplate
AdsMobillsNative.adNative = loadExpansiveNative()
adReceived = completion
}
private func loadExpansiveNative() -> GADAdLoader{
let multipleAdsOptions = GADMultipleAdsAdLoaderOptions()
multipleAdsOptions.numberOfAds = 1
let adLoad = GADAdLoader(adUnitID: AdsMobillsNative.adIdExpansive, rootViewController: AdsMobillsNative.fromController, adTypes: [.unifiedNative], options: [multipleAdsOptions, GADNativeMuteThisAdLoaderOptions()])
adLoad.delegate = AdsMobillsNative.shareInstance
adLoad.load(GADRequest())
return adLoad
}
- Делегат методов
GADUnifiedNativeAdLoaderDelegate
public func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADUnifiedNativeAd) {
if #available(iOS 9.0, *) {
if let view = viewTemplate as? GADTMediumTemplateView{
view.setNativeAd = nativeAd
}else if let view = viewTemplate as? GADTSmallTemplateView{
view.setNativeAd = nativeAd
}
adReceived?(true)
}
}
- Наблюдение за представлением, устанавливающим элемент.
public var setNativeAd: GADUnifiedNativeAd! {
didSet{
hiddenElementes(isHidden: false)
self.nativeAd = setNativeAd
iconAds.mediaContent = setNativeAd.mediaContent
if let textTitle = setNativeAd.advertiser {
titleAd.text = textTitle
}else{
titleAd.text = setNativeAd.headline
}
if let _ = setNativeAd.store{
descAds.isHidden = true
applyQtdStars(number: setNativeAd.starRating)
}else{
starsAppAd.isHidden = true
titleConstraintsTop.constant = -23
descAds.text = setNativeAd.body
}
buttonGo.setTitle(setNativeAd.callToAction, for: .normal)
}
}
- Это возврат отладки при проверке жестов просмотра после получения
GADUnifiedNativeAd
.
(lldb) po viewTemplate.gestureRecognizers
▿ Optional<Array<UIGestureRecognizer>>
▿ some : 4 elements
- 0 : <UITapGestureRecognizer: 0x600003e0e500; state = Possible; view = <AdsMobills.GADTMediumTemplateView 0x7ff8aae04ca0>; target= <(action=handleTap:, target=<GADNativeAdViewMonitor 0x600002c37180>)>>
- 1 : <GADGestureRecognizer: 0x600003b0fb80; baseClass = UIGestureRecognizer; state = Possible; view = <AdsMobills.GADTMediumTemplateView 0x7ff8aae04ca0>>
- 2 : <GADTouchGestureRecognizer: 0x600003d01770; baseClass = UIGestureRecognizer; state = Possible; view = <AdsMobills.GADTMediumTemplateView 0x7ff8aae04ca0>>
- 3 : <GADTwoFingersLongPressGestureRecognizer: 0x600003e0e600; baseClass = UIGestureRecognizer; state = Possible; view = <AdsMobills.GADTMediumTemplateView 0x7ff8aae04ca0>; target= <(action=presentDebugDialog, target=<GADDebugGestureMonitor 0x600000cc16b0>)>>