2017-01-31 11 views
0

Я пытаюсь интегрировать собственное приложение Mopub в свой UITableView для iOS, и оно не загружает объявления.Невозможно интегрировать собственное приложение Mopub в UITableView для iOS

Консоль говорит:

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

Если вы используете XIb UITableViewCell, вы должны использовать этот метод, чтобы зарегистрировать UITableViewCell к родным объявлениям

static func nibForAd() -> UINib! {

пусть adscell: UINib = UINib (nibName: "adsCustomTableViewCell", расслоение: ноль)

возвращение adscell

}

My Native 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 
} 

}