本文介绍了应用程序批准,但没有AdMob的广告出现的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的iOS应用程序是由于在审查过程中苹果没有找到我的广告被拒绝。我上传我的应用程序再次,包括如何看广告的方向,而今天获得批准。现在,一旦我的朋友和家人下载无广告显示出来的应用程序。我检查了我的AdMob帐户,并没有即时通讯pressions出现了,所以我不知道什么是错。有没有人有这个发生在他们身上?此外,它没有被24小时还因为该应用被批准。自从苹果批准它,我认为他们已经看到了广告。 我的应用程序显示的广告,当你开始使用后过滤器挑选照片。 AdMob的显示61 IM pressions,61的请求,和100%的填充率。

  //初始化苹果iAd的横幅
FUNC initiAdBanner(){
    iAdBannerView = ADBannerView(框架:CGRectMake(0,self.view.frame.size.height,0,0))
    iAdBannerView.delegate =自
    iAdBannerView.hidden =真
    view.addSubview(iAdBannerView)
}

//初始化谷歌AdMob的横幅
FUNC initAdMobBanner(){
    如果UIDevice.currentDevice()。userInterfaceIdiom == UIUserInterfaceIdiom.Pad {
        // iPad的旗帜
        adMobBannerView.adSize = GADAdSizeFromCGSize(CGSizeMake(728,90))
        adMobBannerView.frame = CGRectMake(0,self.view.frame.size.height,728,90)
    } 其他 {
        // iPhone旗帜
        adMobBannerView.adSize = GADAdSizeFromCGSize(CGSizeMake(320,50))
        adMobBannerView.frame = CGRectMake(0,self.view.frame.size.height,320,50)
    }
    adMobBannerView.adUnitID =AdMobPublisherID
    adMobBannerView.rootViewController =自
    adMobBannerView.delegate =自
    // adMobBannerView.hidden =真
    view.addSubview(adMobBannerView)
    VAR请求= GADRequest()
    adMobBannerView.loadRequest(要求)
}

//隐藏的旗帜
FUNC hideBanner(横幅:UIView的){
    如果banner.hidden ==假{
        UIView.beginAnimations(hideBanner,语境:无)
        //隐藏的旗帜移动它在屏幕的底部之下
        banner.frame = CGRectMake(0,self.view.frame.size.height,banner.frame.size.width,banner.frame.size.height)
        UIView.commitAnimations()
        banner.hidden =真
    }
}

//显示的旗帜
FUNC showBanner(横幅:UIView的){
    如果banner.hidden ==真{
        UIView.beginAnimations(showBanner,语境:无)
        //将旗帜在屏幕的底部
        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的横幅可用
FUNC bannerViewWillLoadAd(横幅:ADBannerView!){
    的println(iAd系统装!)
    hideBanner(adMobBannerView)
    showBanner(iAdBannerView)
}

//没有iAd的横幅可用
FUNC bannerView(横幅:ADBannerView!didFailToReceiveAdWithError错误:NSError){
    的println(的iAd无法looad广告,现在,以后他们会用)
    hideBanner(iAdBannerView)
    VAR请求= GADRequest()
    adMobBannerView.loadRequest(要求)
}

// AdMob的横幅可用
FUNC adViewDidReceiveAd(查看:GADBannerView!){
    的println(AdMob的装!)
    hideBanner(iAdBannerView)
    showBanner(adMobBannerView)
}

// NO AdMob的横幅可用
FUNC AD浏览报(查看:GADBannerView!didFailToReceiveAdWithError错误:GADRequestError){
    的println(AdMob的无法加载广告,现在,他们将稍后提供\ñ\(错误))
    hideBanner(adMobBannerView)
}
 

解决方案

广告现在出现在你的应用程序。当你的申请被批准苹果仍然必须得到的iAd团队批准接收的iAd广告。这可能需要一些额外的日子。这样一来,无论你的广告正在显示在您的应用程序。您可以通过设置>开发者>和你的填充率设定为0%你的开发设备上进行测试。如果iAd的加载失败最初既不广告正被示出的原因是因为这样的功能:

  //显示的旗帜
    FUNC showBanner(横幅:UIView的){
        如果banner.hidden ==真{
            UIView.beginAnimations(showBanner,语境:无)

            //将旗帜在屏幕的底部
            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
        }
    }
 

您正在查找如果banner.hidden ==真但你的 adMobBannerView 隐藏值永远不会设置为直到iAd的横幅被加载。看到因为没有iAd的横幅正在之前通过iAd的团队从来没有得到满足这一条件批准加载。这种情况也将永远满足于不支持iAd的国家或iAd的失败开始加载广告。

此外,还有很多的的的,当你的广告负荷因您的动画在他们周围,并关闭屏幕。一个更优雅的方法是将其动画字母值,使用户不会注意到当你的广告的变化。您还可以消除您的code很多。我已经重写你要完成什么,注释掉的理由后面。

 进口的UIKit
进口的iAd

一流的ViewController:UIViewController的,ADBannerViewDelegate,GADBannerViewDelegate {

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

覆盖FUNC viewDidLoad中(){
    super.viewDidLoad()
    loadAds()
}

FUNC loadAds(){
    // iAd的
    //更改横幅宽度以匹配视图的宽度是上
    //你需要设置y原点相对于您的观点。不是一个静态的数字。
    iAdBannerView = ADBannerView(框架:CGRectMake(0,self.view.frame.size.height  -  iAdBannerView.frame.height,self.view.frame.size.width,iAdBannerView.frame.height))
    iAdBannerView.delegate =自
    view.addSubview(iAdBannerView)
    //隐藏的iAd初期
    iAdBannerView.alpha = 0.0

    // AdMob的
    //改变adSize到谷歌设置横幅尺寸
    adMobBannerView.adSize = kGADAdSizeBanner
    //更改横幅宽度以匹配视图的宽度是上
    //你需要设置y原点相对于您的观点。不是一个静态的数字。
    adMobBannerView.frame = CGRectMake(0,self.view.frame.size.height  -  adMobBannerView.frame.height,self.view.frame.size.width,adMobBannerView.frame.height)
    adMobBannerView.rootViewController =自
    adMobBannerView.delegate =自
    adMobBannerView.adUnitID =AdMobPublisherID
    //不需要VAR请求= GADRequest()
    adMobBannerView.loadRequest(GADRequest())
    //不要隐藏AdMob的开始
    view.addSubview(adMobBannerView)
}

//使用bannerViewDidLoadAd功能,所以我们知道广告是满载
FUNC bannerViewDidLoadAd(横幅:ADBannerView!){
    的println(iAd系统有一个广告显示)
    //动画横幅褪色
    UIView.beginAnimations(无,背景:无)
    //显示的iAd
    iAdBannerView.alpha = 1.0
    //隐藏的AdMob
    adMobBannerView.alpha = 0.0
    UIView.commitAnimations()
}

FUNC bannerView(横幅:ADBannerView!didFailToReceiveAdWithError错误:NSError){
    的println(iAd系统无法加载广告,因为\(错误))
    //动画横幅褪色
    UIView.beginAnimations(无,背景:无)
    //隐藏的iAd
    iAdBannerView.alpha = 0.0
    //显示的AdMob
    adMobBannerView.alpha = 1.0
    UIView.commitAnimations()
}
 

这有利于网络成瘾与回落到AdMob的,如果iAd的无法加载的广告。你并不需要检查时,AdMob的加载失败的广告作为其填充率几乎总是100%,而如果没有AdMob的广告,我怀疑有一个iAd的广告展示。

My iOS application was denied due to Apple not finding my ads during the review process. I uploaded my application again, included directions on how to see the ads, and it was approved today. Now, once my friends and family downloaded the application no ads are showing up. I checked my AdMob account and no impressions showed up so I don't know what's wrong. Has anyone had this happened to them? Also, it hasn't been 24hrs yet since the app was approved. Since Apple approved it I assume that they have seen the ads. My application shows ads when you start using the filters after you pick a photo. AdMob shows 61 impressions, 61 requests, and 100% fill rate.

// 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)
}
解决方案

Ads are now appearing in your application. When your application is approved by Apple it still must be approved by the iAd team to receive iAd advertisements. This can take a few additional days. As a result, neither of your advertisements were being shown in your application. You can test this by going to Settings>Developer>and setting your fill rate to 0% on your development device. The reason neither ad is being shown if iAd fails to load initially is because of this function:

    // 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
        }
    }

You're checking for if banner.hidden == true but your adMobBannerView's hidden value is never set to true until an iAd banner is loaded. Seeing as no iAd banner was being loaded prior to the approval by iAd's team this condition was never being met. This condition will also never be met in countries that do not support iAd or if iAd fails to load an ad initially.

Also, there's alot of jumping around when your ads load due to you animating them on and off the screen. A more elegant approach would be to animate their alpha values so the user does not notice when your ads change. You can also eliminate alot of your code. I've rewritten what you're trying to accomplish and commented out the reasoning behind it.

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()
}

This favors iAd and falls back to AdMob if iAd fails to load an ad. You don't need to check for when AdMob fails to load an ad as its fill rate is almost always 100%, and if there's no AdMob ad I doubt there's an iAd ad to show.

这篇关于应用程序批准,但没有AdMob的广告出现的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-17 06:20
查看更多