2017-01-31 50 views
0

我正在尝试将Mopub的原生广告整合到iOS的UITableView中,并且不会加载广告。无法将Mopub的原生广告整合到iOS的UITableView中

控制台说:

MOPUB: Received data from MoPub to construct native ad.  
MOPUB: Looking for custom event class named MPMoPubNativeCustomEvent. 
MOPUB: Successfully loaded native ad. 

,但我没有看到我的tableview任何广告。

这里用到我的测试视图控制器整合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

你好,你有没有找到解决方案?我面临同样的问题 –

回答

0

如果使用的是厦门国际银行的UITableViewCell,你必须使用这个方法来注册你的UITableViewCell到原生广告

static func nibForAd() - > UINib! {

让adscell:UINib = UINib(nibName: “adsCustomTableViewCell”,捆绑:无)

回报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 
} 

}