在UITableViewController中显示来自Admob的广告

时间:2017-04-17 15:39:00

标签: swift swift3 admob nsfetchedresultscontroller

我正在尝试将原生广告加载到使用NSFetchedResultsController的UITableViewController中。广告什么都没有显示(只是白色的香料)。我有其他类型的广告正常工作(非页内广告和横幅广告)所以我知道Admob配置正确。这是以下相关代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellIdentifier = "MyCell"
    let adCellIdentifier = "AdCell"
    if 1 == indexPath.row % 10{
        let cell = tableView.dequeueReusableCell(withIdentifier: adCellIdentifier, for: indexPath) as! AdTableViewCell

        cell.expressNativeAd = createNativeAdExpress()

        return cell
    }
    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath)
    let Item = self.fetchedResultsController.object(at: indexPath)
    self.configureCell(cell, withItem: Item)
    return cell
}

func createNativeAdExpress() -> GADNativeExpressAdView {
    let adUnitId = "ca-app-pub-#/#"
    let nativeAdView = GADNativeExpressAdView()
    nativeAdView.adUnitID = adUnitId
    nativeAdView.rootViewController = self
    nativeAdView.delegate = self

    let videoOptions = GADVideoOptions()
    videoOptions.startMuted = true
    nativeAdView.setAdOptions([videoOptions])

    nativeAdView.videoController.delegate = self

    let request = GADRequest()
    request.testDevices = [kGADSimulatorID]
    nativeAdView.load(request)

    return nativeAdView
}

除了空白广告之外,我设置的跳过NSFetchedResultsController返回的项目也存在问题。例如,如果只返回了四个项目,则第二个单元格将是空白Ad单元格,然后第三个单元格是NSFetchedResultsController返回的第三个项目,而不是从第二个项目继续。

换句话说,由于添加了广告,我想要5个单元格。由NSFRC返回4,广告返回1,广告不为空白。

adUnitID是我代码中的正确数字,而不仅仅是我在此处设置的#/#。

expressNativeAd的类型为GADNativeExpressAdView

0 个答案:

没有答案