Нативная реклама Facebook снова не активируется в ячейках UITableView после прокрутки - PullRequest
0 голосов
/ 09 июня 2018

Я реализовал нативную рекламу Facebook в UITableView, первые 1-2 раза она была кликабельной, но когда я прокручиваю просмотр таблицы и снова возвращаюсь в ту же ячейку, теперь объявления не нажимают, я использую swift 3.2. Ниже приведена реализация ячейки.,

let ad = adsManager.nextNativeAd
let cell = self.tableHome.dequeueReusableCell(withIdentifier: "HomeAdsTableViewCell", for: indexPath) as! HomeAdsTableViewCell
cell.message.text = ad?.body
cell.title.text = ad?.title
cell.callToActionButton.setTitle(ad?.callToAction, for: .normal)

if let pic = ad?.coverImage {
    cell.postImage.setImageWithIndicator(imageUrl:pic.url.absoluteString)
}

ad?.registerView(forInteraction: cell.postView, with: self)
cell.selectionStyle=UITableViewCellSelectionStyle.none

return cell

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Я предлагаю вам выполнить шаги здесь.Он рассказал мне о размещении рекламы на Facebook между клетками.

https://www.appcoda.com/facebook-ads-integration/

Как будто ты не ошибаешься в том месте, где поворачиваешь идиота.

Ты должен адаптироватьсяэта часть в ссылке на вашу собственную.

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
       if adsCellProvider != nil && adsCellProvider.isAdCellAtIndexPath(indexPath, forStride: UInt(adRowStep)) {
         return adsCellProvider.tableView(tableView, cellForRowAtIndexPath: indexPath)
       }
       else {
         let cell = tableView.dequeueReusableCellWithIdentifier("idCellSample", forIndexPath: indexPath) as! SampleCell
         cell.lblTitle.text = sampleData[indexPath.row - Int(indexPath.row / adRowStep)]
         return cell
       }  }

Вы также должны использовать этот метод при обновлении экрана и поворотах.

    func configureAdManagerAndLoadAds() {
      if adsManager == nil {
        adsManager = FBNativeAdsManager(placementID: "PLACEMENT_ID", forNumAdsRequested: 5)
        adsManager.delegate = self
        adsManager.loadAds()
      }}
    override func viewWillAppear(animated: Bool) {
      configureAdManagerAndLoadAds()}

Наконец, вы должны проверить соответствующие поля, которые могут небыть совместимым с контентом swift 3.

0 голосов
/ 21 августа 2018
//create a new object  of nativead in your class//

var previousNativead : FBNativeAd?

let ad = adsManager.nextNativeAd
self.previousNativead?.unregisterView()
let cell = self.tableHome.dequeueReusableCell(withIdentifier: "HomeAdsTableViewCell", for: indexPath) as! HomeAdsTableViewCell
cell.message.text = ad?.body
cell.title.text = ad?.title
cell.callToActionButton.setTitle(ad?.callToAction, for: .normal)

if let pic = ad?.coverImage {
    cell.postImage.setImageWithIndicator(imageUrl:pic.url.absoluteString)
}
previousNativead = ad
ad?.registerView(forInteraction: cell.postView, with: self)
cell.selectionStyle=UITableViewCellSelectionStyle.none

return cell
0 голосов
/ 01 июля 2018

Сначала в вашей viewDidLoad () проверьте, что вы добавили

override func viewDidLoad() {
     super.viewDidLoad()
     adsManager = FBNativeAdsManager(placementID: "YOUR_PLACEMENT_ID_HERE", forNumAdsRequested: "YourNumAds")
     adsManager.delegate = self
     adsManager.loadAds()
}

, а затем для соответствия FBNativeAdsManagerDelegate, вам нужно будет добавить следующий метод nativeAdsLoaded ().

    func nativeAdsLoaded() { 
    adsCellProvider = FBNativeAdTableViewCellProvider(manager: adsManager, forType: FBNativeAdViewType.genericHeight300)
    adsCellProvider.delegate = self
    if self.tableview != nil {
         self.tableview.reloadData()
       }
     }

последнее, что вы должны сделать, это registerView непосредственно в ячейку, а не postView

ad?.registerView(forInteraction: cell, with: self)

надеяться, что это поможет вам.

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