【问题标题】:Swift - Mopub Native Ad loaded successfully but it's not displaying on viewSwift - Mopub 原生广告已成功加载,但未显示在视图中
【发布时间】:2019-02-05 17:44:30
【问题描述】:

我正在尝试快速将 MoPub 的原生广告手动实施到我的应用中。

我能够成功加载它

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

我在情节提要中创建了一个视图,并且它已连接

@IBOutlet var NativeAdView: UIView!

由于 MoPub 的文档是用 Objective C 编写的,所以我必须将所有内容都翻译成 swift。这是我加载 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))

广告应显示在此处显示的橙色框上

我究竟做错了什么?我错过了什么吗?

链接到 MoPub 的原生广告文档:https://developers.mopub.com/docs/ios/native/

-- 更新--

我做了一些实验,并确认视图实际上已添加到我的 NativeAdView。我将 aView 的背景颜色更改为蓝色。

aView.backgroundColor = UIColor.blue

这是结果。

广告仍未展示。将对 .xib 文件进行一些研究,并确保我做得正确。

-- 更新--

打印响应的属性给了我这个。

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

看来我得到的信息是正确的。

【问题讨论】:

    标签: ios swift mopub native-ads


    【解决方案1】:

    我发现我错过了什么。在查看 MPNativeAdRendering 协议后,我发现我需要在我的 CalculatorNativeAdView 类中添加 nibForAd()。

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

    广告出现,但没有图标图像和主图像。但我相信这需要一个不同的问题。

    【讨论】:

    • 你知道为什么图片不显示了吗?
    • 嘿!我有一段时间没做这个了,但我可以尽快检查。我会在今天或明天通知你
    • 感谢您的回复。我想出了如何加载图像数据,使用这种方法:- (void) layoutCustomAssetsWithProperties:(NSDictionary *) customProperties imageLoader:(MPNativeAdRenderingImageLoader *) imageLoader
    【解决方案2】:

    您可以在将子视图添加到橙色框后尝试 layoutSubviews() 方法,在此链接中,对该方法有更好的解释,以及其他可能对您有所帮助的方法https://medium.com/@abhimuralidharan/ios-swift-setneedslayout-vs-layoutifneeded-vs-layoutsubviews-5a2b486da31c

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-27
      • 2016-09-06
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 2013-09-06
      相关资源
      最近更新 更多