gpt4 book ai didi

swift - 在 Swift 应用程序中实现 AdMob 时出现错误 "No Ad To Show"

转载 作者:行者123 更新时间:2023-12-03 09:22:27 30 4
gpt4 key购买 nike

我正在尝试执行(看似)简单的任务,将 native AdMob 广告集成到我在 Swift 上运行的 iOS 应用程序中。让我首先向您展示我的 Storyboard和集成代码,然后我们将继续讨论我尝试修复的问题。
设置: Storyboard和代码
在我的 App Delegate 中,我将 Firebase 配置为 Google 移动广告...

import Firebase

class AppDelegate: UIResponder, UIApplicationDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
FirebaseApp.configure()
GADMobileAds.configure(withApplicationID: "ca-app-pub-8482280186158418~7106629637")
GADMobileAds.sharedInstance().start(completionHandler: nil)
}
}
我还添加了我的 GADApplicationIdentifier到我的 Info.plist。在我的 Storyboard中,我有一个 ViewController包含 UICollectionViewCell包含 GADUnifiedNativeAdView原生元素通过网点联系起来。
Screenshot of Storyboard
在我的 ViewController 的 viewDidLoad 中,我加载了 5 个原生广告。
override func viewDidLoad() {
super.viewDidLoad()
// Load Ads
let adUnitID = "ca-app-pub-{adUnitId}"
let numAdsToLoad = 5
let options = GADMultipleAdsAdLoaderOptions()
options.numberOfAds = numAdsToLoad

let imageOptions = GADNativeAdImageAdLoaderOptions()
imageOptions.disableImageLoading = false

let mediaOptions = GADNativeAdMediaAdLoaderOptions()
mediaOptions.mediaAspectRatio = .square

let adOptions = GADNativeAdViewAdOptions()
adOptions.preferredAdChoicesPosition = .topLeftCorner

adLoader = GADAdLoader(adUnitID: adUnitID, rootViewController: self, adTypes: [.unifiedNative], options: [options, imageOptions, mediaOptions])
adLoader.delegate = self
adLoader.load(GADRequest())
}
GADUnifiedNativeAdLoaderDelegate 结束,我收到广告并将它们添加到数组中。
    var nativeAds = [GADUnifiedNativeAd]()

extension ViewController: GADUnifiedNativeAdLoaderDelegate {


func adLoader(_ adLoader: GADAdLoader,
didFailToReceiveAdWithError error: GADRequestError) {
print("NATIVE AD - didFailToReceiveAdWithError: \(error)")

}

func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADUnifiedNativeAd) {
print("NATIVE AD - didReceive: \(nativeAd)")

nativeAds.append(nativeAd)
}

func adLoaderDidFinishLoading(_ adLoader: GADAdLoader) {
print("NATIVE AD - adLoaderDidFinishLoading")
libraryCollection.reloadData()
}
}
在我的 UICollectionView's代表,在 cellForItemAt我设置了单元格的类
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

if isAdCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "adCell", for: indexPath) as! AdCollectionViewCell
if nativeAds.count == 5 {
cell.nativeAd = nativeAds[0]
cell.nativeAd.rootViewController = self

}
cell.setAdData()
return cell
}
最后,在我的 UICollectionViewCell's类,我设置了广告数据
import Firebase

class AdCollectionViewCell: UICollectionViewCell {

@IBOutlet var adView: GADUnifiedNativeAdView
var nativeAd = GADUnifiedNativeAd()

func setAdData() {
adView.nativeAd = nativeAd
(adView.headlineView as! UILabel).text = nativeAd.headline
adView.callToActionView?.isUserInteractionEnabled = false
(adView.callToActionView as! UILabel).text = nativeAd.callToAction
adView.mediaView?.mediaContent = nativeAd.mediaContent
adView.mediaView?.contentMode = .scaleAspectFill

}

}
错误
现在,每当我使用 Google AdMob 提供的测试原生广告单元 ID 时, ca-app-pub-3940256099942544/3986624511 ,一切正常!我没有收到错误并且系统打印
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283bbdc00>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283bbd7a0>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283bc73a0>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283ba9880>
NATIVE AD - didReceive: <GADUnifiedNativeAd: 0x283ba9810>
NATIVE AD - adLoaderDidFinishLoading
但是当我尝试使用自己的原生广告单元 ID 时,问题就出现了。加载时,系统打印错误
NATIVE AD - didFailToReceiveAdWithError: Error Domain=com.google.admob Code=1 "Request Error: No ad to show." UserInfo={NSLocalizedDescription=Request Error: No ad to show., gad_response_info=  ** Response Info **
Response ID: ymbzXou2CcrohQb16bzgBA
Network: (null)

** Mediation line items **
Entry (1)
Network: GADMAdapterGoogleAdMobAds
Credentials:
{
}
Error: Error Domain=com.google.admob Code=1 "Request Error: No ad to show." UserInfo={NSLocalizedDescription=Request Error: No ad to show.}
Latency: 0.095
}
对于我加载的每个广告。我已经尝试了很多方法来解决这个问题,我在互联网上找到了这些……
故障排除
正如我提到的,我已经在互联网上搜索帮助和故障排除选项。这是我所做的。
  • 创建了一个新的原生广告单元 ID
  • 等了一个多星期才确认单元 ID
  • 的错误
  • 检查了我的 AdMob 和 AdSense 帐户信息
  • 检查了我的 AdMob 和 AdSense 付款信息
  • 确保 Info.plist 中的 GADApplicationIdentifier 正确
  • 将所有要求添加到 App Transport Security Settings在 Info.plist 中为 laid out by AdMob . (允许任意加载、允许任意加载媒体、允许任意加载 Web 内容)
  • 双倍,三倍,四倍,五倍查了码,跟着documentation由 AdMob 提供
  • 已关注 CodeLab由 AdMob 提供
  • 最佳答案

    我在错误代码 1 上遇到了同样的问题。也是在我在 appstore 中发布我的应用程序之后。测试广告效果很好。在我可以将我的应用程序与应用程序商店链接后(发布后 8 天),它起作用了。

    关于swift - 在 Swift 应用程序中实现 AdMob 时出现错误 "No Ad To Show",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558022/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com