已批准应用但未显示AdMob广告

时间:2015-05-22 00:23:06

标签: ios admob iad

由于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)
}

2 个答案:

答案 0 :(得分:4)

广告现已出现在您的应用中。当您的申请获得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横幅之前,adMobBannerView的{​​{1}}值永远不会设置为hidden。在iAd团队批准之前,看到没有iAd横幅被加载,这种情况从未得到满足。在不支持iAd或iAd最初无法加载广告的国家/地区,此条件也永远不会

此外,由于您在屏幕上和屏幕外设置动画,广告加载时会有很多。更优雅的方法是设置true值的动画,这样用户就不会注意到广告何时发生变化。您还可以消除很多代码。我已经改写了你想要完成的事情,并对其背后的推理进行了评论。

alpha

如果iAd无法加载广告,则会优先支持iAd并退回到AdMob。您无需检查AdMob何时无法加载广告,因为其填充率几乎总是100%,如果没有AdMob广告,我怀疑是否有要展示的iAd广告。

答案 1 :(得分:-1)

您需要查看设备日志,以确定没有展示广告的原因。很有可能,此时广告服务器上没有可用的广告。

这是正常的事态,为什么你应该使用中介来确保你有一个备份网络。