我试图将Mopub的原生广告整合到我的UITableView for iOS中,而且它没有加载广告。
控制台说:
MOPUB: Received data from MoPub to construct native ad.
MOPUB: Looking for custom event class named MPMoPubNativeCustomEvent.
MOPUB: Successfully loaded native ad.
但我在桌面视图中看不到任何广告。
这是我用于集成mopub的测试视图控制器:
import UIKit
import MoPub
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, MPTableViewAdPlacerDelegate {
@IBOutlet weak var tableView: UITableView!
let adUnitID = "my ad unit id"
var placer:MPTableViewAdPlacer?
var dataSource:[String]?
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.mp_setDelegate(self)
self.tableView.mp_setDataSource(self)
self.tableView.register(UINib(nibName: "customCell", bundle: Bundle(for: customCell.self)), forCellReuseIdentifier: "cell")
self.dataSource = [String]()
for index in 0...20{
self.dataSource?.append("My Index: \(index)")
}
self.setupAdPlacer()
self.tableView.mp_reloadData()
}
func setupAdPlacer(){
let targeting: MPNativeAdRequestTargeting! = MPNativeAdRequestTargeting()
targeting.desiredAssets = Set([kAdIconImageKey, kAdCTATextKey, kAdTextKey, kAdTitleKey])
let positioning:MPAdPositioning = MPAdPositioning()
let settings:MPStaticNativeAdRendererSettings = MPStaticNativeAdRendererSettings()
settings.renderingViewClass = NativeAdCell.self
settings.viewSizeHandler = {(maxWidth: CGFloat) -> CGSize in
let size:CGSize = CGSize(width: maxWidth, height: 333)
return size
}
let config:MPNativeAdRendererConfiguration = MPStaticNativeAdRenderer.rendererConfiguration(with: settings)
config.supportedCustomEvents = ["MPMoPubNativeCustomEvent"]
self.placer = MPTableViewAdPlacer(tableView: self.tableView, viewController: self, adPositioning: positioning, rendererConfigurations: [config])
self.placer?.delegate = self
self.placer?.loadAds(forAdUnitID: adUnitID, targeting: targeting)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (self.dataSource?.count)!
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.mp_dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? customCell
if cell == nil {
cell = customCell()
}
let data = self.dataSource?[indexPath.row]
cell?.myTextLabel?.text = data
return cell!
}
}
我的NativeAdCell类:
import UIKit
import MoPub
class NativeAdCell: UITableViewCell, MPNativeAdRendering {
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
答案 0 :(得分:2)
如果您使用的是xib UITableviewcell,则必须使用此方法将UITableviewcell注册到原生广告
static func nibForAd() - > UINib! {
让adscell:UINib = UINib(nibName:“adsCustomTableViewCell”,包:nil)
返回adscell
}
我的原生adsCustomTableViewCell广告实施:
扩展adsCustomTableViewCell:MPNativeAdRendering {
func nativeMainTextLabel() -> UILabel! {
return self.descriptionLabel
}
func nativeIconImageView() -> UIImageView! {
return self.adsImage
}
func nativeTitleTextLabel() -> UILabel! {
return self.titleLabel
}
func nativeCallToActionTextLabel() -> UILabel! {
return self.LearnMoreLabel
}
static func nibForAd() -> UINib! {
let adscell:UINib = UINib(nibName: "adsCustomTableViewCell", bundle: nil)
return adscell
}
}