Swift - Mopub Native Ad успешно загружен, но не отображается при просмотре. - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь внедрить родную рекламу MoPub вручную в свое приложение в быстром темпе.

Мне удалось загрузить его успешно

Loan Calculator[4217:1022703] MOPUB: Successfully loaded native ad.

У меня есть представление, которое я создал в раскадровке, и оно подключено

@IBOutlet var NativeAdView: UIView!

Поскольку документация MoPub по этому вопросунаписано в цель C, я должен перевести все, чтобы быстроВот мой код для загрузки нативного объявления, которое находится в viewDidLoad ().

let settings = MPStaticNativeAdRendererSettings()
            settings.renderingViewClass = CalculatorNativeAdView.self

let config = MPStaticNativeAdRenderer.rendererConfiguration(with: settings)

let adRequest = MPNativeAdRequest(adUnitIdentifier: MoPubTestID, rendererConfigurations: [config!])

let targeting = MPNativeAdRequestTargeting()

targeting.desiredAssets = Set<AnyHashable>([kAdTitleKey, kAdTextKey, kAdCTATextKey, kAdIconImageKey, kAdMainImageKey, kAdStarRatingKey])

adRequest?.start(completionHandler: { request, response, error in
                if error != nil {
                    print(error.debugDescription)
                } else {
                   let nativeAd = response
                    nativeAd?.delegate = self
                    let nativeAdViewCon: UIView? = try! nativeAd?.retrieveAdView()
                    nativeAdViewCon?.frame = self.NativeAdView.bounds
                    print(nativeAdViewCon?.frame)
                    if let aView = nativeAdViewCon {
                        self.NativeAdView.addSubview(aView)
                    }
                }
            })

CalculatorNativeAdView подключен к .xib, который я создал для этого нативного объявления.

import UIKit
import MoPub

class CalculatorNativeAdView: UIView, MPNativeAdRendering {

    @IBOutlet var titleLabel: UILabel!
    @IBOutlet var mainTextLabel: UILabel!
    @IBOutlet var mainImageView: UIImageView!
    @IBOutlet var iconImageView: UIImageView!
    @IBOutlet var callToActionLabel: UILabel!

    @IBOutlet var privacyInformationIconImageView: UIImageView!

    override func layoutSubviews() {
        super.layoutSubviews()
        // layout your views
    }

    func nativeMainTextLabel() -> UILabel? {
        return mainTextLabel
    }

    func nativeTitleTextLabel() -> UILabel? {
        return titleLabel
    }

    func nativeCallToActionTextLabel() -> UILabel? {
        return callToActionLabel
    }

    func nativeIconImageView() -> UIImageView? {
        return iconImageView
    }

    func nativeMainImageView() -> UIImageView? {
        return mainImageView
    }

    func nativePrivacyInformationIconImageView() -> UIImageView? {
        return privacyInformationIconImageView
    }  
}

Я добавил MPNativeAdDelegate к viewController и добавил viewControllerForPresentingModalView ()

func viewControllerForPresentingModalView() -> UIViewController! {
        return self
    }

В NativeAdView есть рамка, поэтому я не думаю, что это проблема

Optional((0.0, 0.0, 260.0, 260.0))

Объявление должно отображаться на оранжевом поле, показанном здесь

enter image description here Что я делаю не так?Я что-то пропустил?

ссылка на документацию родной рекламы MoPub: https://developers.mopub.com/docs/ios/native/

- ОБНОВЛЕНИЕ -

Я провел некоторые эксперименты и подтвердил, что видна самом деле добавляется в мой NativeAdView.Я изменил цвет фона aView на синий.

aView.backgroundColor = UIColor.blue

Это результат.

enter image description here

Объявление все еще неотображение.Собираюсь изучить некоторые файлы .xib и убедиться, что я делаю это правильно.

- Обновление -

Печать свойств ответа дала мнеэтот.

Optional([AnyHashable("privacyiconuiimage"): <UIImage: 0x283eadb90>, {20, 20}, AnyHashable("ctatext"): Go, AnyHashable("title"): MoPub, AnyHashable("iconimage"): https://d30x8mtr3hjnzo.cloudfront.net/creatives/6591163c525f4720b99abf831ca247f6, AnyHa

Похоже, я правильно получаю информацию.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я узнал, чего мне не хватало.Изучив протокол MPNativeAdRendering, я обнаружил, что мне нужно добавить nibForAd () в мой класс CalculatorNativeAdView.

static func nibForAd() -> UINib! {
        let adscell:UINib = UINib(nibName: "CalculatorNativeAdView", bundle: nil)
        return adscell
    }

Объявление появляется, но без изображения значка и основного изображения.Но я считаю, что все это требует другого вопроса.enter image description here

0 голосов
/ 05 февраля 2019

вы можете попробовать метод layoutSubviews () после добавления подпредставления в оранжевую рамку, в этой ссылке есть лучшее объяснение метода среди других методов, которые могут вам помочь https://medium.com/@abhimuralidharan/ios-swift-setneedslayout-vs-layoutifneeded-vs-layoutsubviews-5a2b486da31c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...