我正在尝试将原生广告加载到使用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