【问题标题】:App approved but no AdMob ads appearing应用已获批准,但没有出现 AdMob 广告
【发布时间】:2015-05-22 00:23:05
【问题描述】:

由于 Apple 在审核过程中未找到我的广告,我的 iOS 应用程序被拒绝。我再次上​​传了我的申请,包括如何查看广告的说明,今天获得批准。现在,一旦我的朋友和家人下载了该应用程序,就没有广告出现了。我检查了我的 AdMob 帐户,但没有显示任何展示次数,所以我不知道出了什么问题。有没有人遇到过这种情况?此外,该应用程序获得批准还不到 24 小时。自从 Apple 批准以来,我认为他们已经看到了这些广告。 My application 在您选择照片后开始使用过滤器时显示广告。 AdMob 展示了 61 次展示、61 次请求和 100% 的填充率。

// Initialize Apple iAd banner
func initiAdBanner() {
    iAdBannerView = ADBannerView(frame: CGRectMake(0, self.view.frame.size.height, 0, 0) )
    iAdBannerView.delegate = self
    iAdBannerView.hidden = true
    view.addSubview(iAdBannerView)
}

// Initialize Google AdMob banner
func initAdMobBanner() {
    if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
        // iPad banner
        adMobBannerView.adSize =  GADAdSizeFromCGSize(CGSizeMake(728, 90))
        adMobBannerView.frame = CGRectMake(0, self.view.frame.size.height, 728, 90) 
    } else {
        // iPhone banner
        adMobBannerView.adSize =  GADAdSizeFromCGSize(CGSizeMake(320, 50))
        adMobBannerView.frame = CGRectMake(0, self.view.frame.size.height, 320, 50)
    }
    adMobBannerView.adUnitID = "AdMobPublisherID"
    adMobBannerView.rootViewController = self
    adMobBannerView.delegate = self
    // adMobBannerView.hidden = true
    view.addSubview(adMobBannerView)
    var request = GADRequest()
    adMobBannerView.loadRequest(request)
}

// Hide the banner
func hideBanner(banner: UIView) {
    if banner.hidden == false {
        UIView.beginAnimations("hideBanner", context: nil)
        // Hide the banner moving it below the bottom of the screen
        banner.frame = CGRectMake(0, self.view.frame.size.height, banner.frame.size.width, banner.frame.size.height)
        UIView.commitAnimations()
        banner.hidden = true
    }
}

// Show the banner
func showBanner(banner: UIView) {
    if banner.hidden == true {
        UIView.beginAnimations("showBanner", context: nil)
        // Move the banner on the bottom of the screen
        banner.frame = CGRectMake(0, (self.view.frame.size.height-70) - banner.frame.size.height,
        banner.frame.size.width, banner.frame.size.height);
        UIView.commitAnimations()
        banner.hidden = false
    }
}

// iAd banner available
func bannerViewWillLoadAd(banner: ADBannerView!) {
    println("iAd loaded!")
    hideBanner(adMobBannerView)
    showBanner(iAdBannerView)
}

// NO iAd banner available
func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    println("iAd can't looad ads right now, they'll be available later")
    hideBanner(iAdBannerView)
    var request = GADRequest()
    adMobBannerView.loadRequest(request)
}

// AdMob banner available
func adViewDidReceiveAd(view: GADBannerView!) {
    println("AdMob loaded!")
    hideBanner(iAdBannerView)
    showBanner(adMobBannerView)
}

// NO AdMob banner available
func adView(view: GADBannerView!, didFailToReceiveAdWithError error:    GADRequestError!) {
    println("AdMob Can't load ads right now, they'll be available later \n\(error)")
    hideBanner(adMobBannerView)
}

【问题讨论】:

  • 很少有 AdMob 没有接近 100% 的填充率。因此,广告根本不显示要么是由于互联网连接非常差,要么是您在应用程序中实施广告时做错了什么。你记得在提交分发之前从你的应用程序中删除你的tesIDrequest,对吧?您说您的 AdMob 帐户上没有展示次数,但是否有任何请求
  • 在我的 Xcode 设备上进行测试时,广告可以正常工作。我得到了展示,但没有广告出现。如果这很重要,自批准以来还没有 24 小时,我无法链接我的应用程序,因为当我在 admob 中搜索它时它没有出现。我在批准之前手动链接它。在 admob 中,它处于活动状态并显示展示次数。广告展示需要时间吗?我不明白为什么它们会显示在我上传的广告中,但 App Store 广告中的广告不会出现。现在是 61 次展示,0 美元收入,0 美元请求 rpm,0 次会话。
  • 我获得了展示,但没有广告出现 是吗?您是指请求吗? 如果这很重要,自批准以来还没有 24 小时,我无法链接我的应用,因为当我在 admob 中搜索它时它没有显示 这不是一个因素。如果您在测试时收到带有您为该应用发布的 ID 的广告,那么您现在应该仍会收到广告。在 App Store 中发布指向您的应用的链接和/或编辑您的问题以包含与您的 AdMob 广告相关的任何相关代码,我会看看。
  • 我用代码编辑了问题。 Ad mob 显示 61 次展示、61 次请求和 100% 的填充率,但没有广告出现。链接到应用程序itunes.apple.com/us/app/simply-photo-filters/id991898032?mt=8
  • 查看我的回答,了解您遇到此问题的原因以及解决方法。

标签: ios admob iad


【解决方案1】:

广告现在出现在您的应用程序中。当您的申请被 Apple 批准后,它仍然必须得到 iAd 团队的批准才能接收 iAd 广告。这可能需要几天时间。结果,您的任何广告都没有显示在您的应用程序中。您可以通过转到设置>开发人员>并将开发设备上的填充率设置为 0% 来测试这一点。如果 iAd 最初加载失败,则两个广告都不会显示的原因是因为此功能:

    // Show the banner
    func showBanner(banner: UIView) {
        if banner.hidden == true {
            UIView.beginAnimations("showBanner", context: nil)

            // Move the banner on the bottom of the screen
            banner.frame = CGRectMake(0, (self.view.frame.size.height-70) - banner.frame.size.height,
                banner.frame.size.width, banner.frame.size.height);

            UIView.commitAnimations()
            banner.hidden = false
        }
    }

您正在检查if banner.hidden == true,但在加载iAd 横幅之前,您的adMobBannerViewhidden 值永远不会设置为true。由于在 iAd 团队批准之前没有加载任何 iAd 横幅,因此从未满足此条件。在不支持 iAd 或 iAd 最初无法加载广告的国家/地区,也将永远不会满足此条件。

此外,由于您在屏幕上和屏幕外设置动画,广告加载时会有很多跳跃。更优雅的方法是将其alpha 值设置为动画,这样用户就不会注意到您的广告何时发生变化。您还可以消除很多代码。我已经重写了你想要完成的内容并注释掉了它背后的原因。

import UIKit
import iAd

class ViewController: UIViewController, ADBannerViewDelegate, GADBannerViewDelegate {

var iAdBannerView : ADBannerView = ADBannerView()
var adMobBannerView : GADBannerView = GADBannerView()

override func viewDidLoad() {
    super.viewDidLoad()
    loadAds()
}

func loadAds() {
    // iAd
    // Changed banners width to match the width of the view it is on
    // You need to set the y origin relative to your view. Not a static number.
    iAdBannerView = ADBannerView(frame: CGRectMake(0, self.view.frame.size.height - iAdBannerView.frame.height, self.view.frame.size.width, iAdBannerView.frame.height))
    iAdBannerView.delegate = self
    view.addSubview(iAdBannerView)
    // Hide iAd initially
    iAdBannerView.alpha = 0.0

    // AdMob
    // Changed adSize to Googles set banner size
    adMobBannerView.adSize = kGADAdSizeBanner
    // Changed banners width to match the width of the view it is on
    // You need to set the y origin relative to your view. Not a static number.
    adMobBannerView.frame = CGRectMake(0, self.view.frame.size.height - adMobBannerView.frame.height , self.view.frame.size.width, adMobBannerView.frame.height)
    adMobBannerView.rootViewController = self
    adMobBannerView.delegate = self
    adMobBannerView.adUnitID = "AdMobPublisherID"
    // Dont need var request = GADRequest()
    adMobBannerView.loadRequest(GADRequest())
    // Do not hide AdMob initially
    view.addSubview(adMobBannerView)
}

// Use bannerViewDidLoadAd function so we know ad is fully loaded
func bannerViewDidLoadAd(banner: ADBannerView!) {
    println("iAd has an ad to show")
    // Animate fade of banners
    UIView.beginAnimations(nil, context: nil)
    // Show iAd
    iAdBannerView.alpha = 1.0
    // Hide AdMob
    adMobBannerView.alpha = 0.0
    UIView.commitAnimations()
}

func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {
    println("iAd failed to load an ad because \(error)")
    // Animate fade of banners
    UIView.beginAnimations(nil, context: nil)
    // Hide iAd
    iAdBannerView.alpha = 0.0
    // Show AdMob
    adMobBannerView.alpha = 1.0
    UIView.commitAnimations()
}

这有利于 iAd,如果 iAd 无法加载广告,则会退回到 AdMob。您无需检查 AdMob 何时无法加载广告,因为它的填充率几乎总是 100%,如果没有 AdMob 广告,我怀疑是否有 iAd 广告可以展示。

【讨论】:

    【解决方案2】:

    您需要查看设备日志以确定没有显示广告的原因。在那个时间点,广告服务器很可能没有可用的广告。

    这是一种正常的情况,为什么您应该使用调解来确保您有一个备用网络。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多