使用iAd作为默认广告网络,如果iAd失败,则使用AdMob

使用iAd作为默认广告网络,如果iAd失败,则使用AdMob

问题描述:

我以这种方式构建了我的应用程序,并且所有内容似乎都在工作。在听说iAd填充率出乎意料的低落之后,我决定这是最好的方法,但我试着用Google搜索它,并且我找不到其他人在他们的应用中实现广告的记录。这是否违反了TOS?使用iAd作为默认广告网络,如果iAd失败,则使用AdMob

为什么不使用Adwhirl。它的伟大SDK,使您能够完成您所需要的。您可以设置不同广告网络的优先级设置,如果您发现一个网络的性能优于其他网络,则可以随时对其进行优化设置。

它可以根据请求失败或优先级处理显示广告的所有逻辑,而无需您担心它。您所做的只是创建一个adwhirl视图并请求一个广告。其余的事情包括适当的清爽。如果iAd第一次失败,然后显示admob,但是下一个iAd加载成功,则会显示而不是admob,假设您将iAd设置为更高优先级的网络。

http://adwhirl.com

+0

这是我决定的解决方案,但是我在实现AdWhirl后出现了一些问题。最重要的是,该应用将在启动时请求广告,并且只会失败而不再提出其他请求!很多时候,我加载应用程序,应用程序将永远都不会adWhirlDidReceiveAd:也不会adWhirlDidFailToReceiveAd :.此外,我的iAd请求总是失败,所以我甚至无法看到我需要的广告框,以便直观地完成广告到我的应用程序的集成! – 2010-09-05 05:08:14

+0

你对iAds的满意度如何?你是否收到一些广告? – Goles 2010-09-09 05:36:16

+0

adwirl不支持ARC。 – 2012-10-25 01:46:37

我有iAds和Admob。

我强烈建议先加载iAd,如果你没有得到广告使用admob。如果您收到广告,则iAd的广告有效每千次展示费用要高于admob。请记住,iAd每30秒刷新一次,以避免广告方法被多次调用。

我的应用程序已被批准,你可以得到它,八达通甲骨文。 http://kurl.ws/Ay

+0

太好了,谢谢你提供的信息。两个admob广告出现在屏幕上,并且在意识到iad失败方法每30秒被调用一次后我能够解决它。 如何处理iAd最初失败的情况,您成功将admob广告放入视图中,然后iAd在此之后成功一段时间。每一种情况都会发生吗? – 2010-09-02 23:39:14

+0

我想我隐藏了iAd视图,以防万一。 我可能会做的是把iAd视图放回去,并删除admob。 iAd会让你赚更多的钱。 – 2010-09-03 01:31:10

你通过设置可见NO隐藏ADBannerView?通过ADBannerView,如果您将可见性设置为NO,那么它将停止询问广告。要“隐藏”ADBannerView,您需要将其转换到屏幕外的某个位置。

可以使用的AdWhirl 其最好的教程是这里 Tutorial

您可以使用这些控件来显示网络成瘾以及AdMob的两个

iAdPlusAdMob

CJPAdController

或者这里很好解释一步一步解释

http://mobile.tutsplus.com/tutorials/iphone/supplementing-iad-placement-with-admob/

我结束了这个策略:

首先我创建的故事板2个出口,一个是ADBannerView,另一个用于GADBannerView

@IBOutlet weak var iadBannerView: ADBannerView! 
@IBOutlet weak var adMobBannerView: GADBannerView! 

在您的viewDidLoad的您可以这样做:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.iadBannerView.hidden = true 
    self.adMobBannerView.hidden = true 
    self.iadBannerView.delegate = self 
    NSTimer.scheduledTimerWithTimeInterval(35, target: self, selector: Selector("dispalyGoogleBanner"), userInfo: nil, repeats: false) 
} 

所以这里你隐藏了两个横幅(如果你喜欢哟你可以直接在故事板中完成)。那么您等待35秒后才能显示Google广告。因此,在显示谷歌广告之前,您基本上需要查看iAD是否可用。

这是用来显示谷歌的旗帜方法:

//MARK: - Google banner 
    func dispalyGoogleBanner() { 
     if !self.isDisplayIAD && !idDisplayADMob { 
     idDisplayADMob = true 
     self.adMobBannerView.adUnitID = kAdUnitID 
     self.adMobBannerView.hidden = false 
     self.adMobBannerView.rootViewController = self 
     self.adMobBannerView.loadRequest(GADRequest()) 
     } 
    } 

如此前显示谷歌的旗帜,我们保证的iAD横幅和旗帜的AdMob还没有显示出来。如果是这种情况,那么我们可以发送请求以显示ADMob标题。

这里我实现的ADBannerViewDelegate

func bannerViewDidLoadAd(banner: ADBannerView!) { 
     self.iadBannerView = banner 
     self.iadBannerView.hidden = false 
     self.adMobBannerView.hidden = true 
     idDisplayADMob = false 
     self.view.layoutIfNeeded() 
    } 

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError 
     error: NSError!) { 
      println(error) 
      isDisplayIAD = false 
      self.iadBannerView.hidden = true 
      self.dispalyGoogleBanner() 
    } 

    func bannerViewActionDidFinish(banner: ADBannerView!) { 
     self.iadBannerView = banner 
     self.iadBannerView.hidden = true 
     isDisplayIAD = false 
     dispalyGoogleBanner() 
    } 

    func bannerViewWillLoadAd(banner: ADBannerView!) { 
     //remove the google banner if displayed 
     isDisplayIAD = true 
     self.iadBannerView.hidden = false 
     self.adMobBannerView.hidden = true 
     idDisplayADMob = false 
     self.view.layoutIfNeeded() 
    } 

我对这些代表是检查是否网络成瘾的旗帜是可用的,如果它的话,那么我会隐藏在AdMob广告横幅基本上没有。如果iAD完成显示广告,那么我会打电话给ADMob横幅看到bannerViewActionDidFinish

您可以很容易地适应您的实施这个逻辑。