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

发布于 2024-09-16 18:42:54 字数 116 浏览 8 评论 0原文

我已经以这种方式构建了我的应用程序,一切似乎或多或少都正常工作。在听说 iAd 填充率极低之后,我认为这将是最好的方法,但我尝试用谷歌搜索它,但找不到其他人在他们的应用程序中像这样实施广告的记录。这是否违反了服务条款?

I've built my app this way and everything seems to be working more or less. After hearing about the notoriously low iAd fill rate I decided that this would be the best method, but I tried googling it and i couldnt find record of anyone else implementing ads in their app like this. Does this violate the TOS?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

小瓶盖 2024-09-23 18:42:55

您可以使用 AdWhirl
最好的教程就在这里
教程

You can use AdWhirl
and its best tutorial is here
Tutorial

衣神在巴黎 2024-09-23 18:42:55

我最终采用了这个策略:

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

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

在 vi​​ewDidLoad 中,您可以执行以下操作:

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 广告。因此,在显示 google 广告之前,您基本上想看看 iAD 是否可用。

这是显示google横幅的方法:

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

所以在显示google横幅之前,我们确保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()
    }

基本上对这些代理执行的操作是检查 iAD 横幅是否可用,如果是的话,我将隐藏 adMob 横幅。如果 iAD 完成显示广告,那么我将调用 ADMob 横幅,请参阅 bannerViewActionDidFinish

您可以轻松地在您的实现中调整此逻辑。

I ended up with this strategy:

first of all I have created 2 outlets from the storyboard, one for the ADBannerView and another for the GADBannerView

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

In your viewDidLoad you can do this:

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

So here you hidden both banners (if you prefer you can do it directly in storyboard). then you wait 35 second before to display the google ads. So before to display the google ads you basically want to see if iAD it's available.

this is the method used to display the google banner:

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

so before to display the google banner, we ensure that the iAD banner and the adMob banner are not displayed yet. If that it's the case, then we can send the request to display the ADMob banner.

Here my implementation of the 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()
    }

what I basically did on these delegates it's to check if the iAD banner it's available, if that it's case then I'll hidden the adMob banner. If the iAD finished to display the ads, then I'll call the ADMob banner see bannerViewActionDidFinish

You can easily adapt this logic tu your implementation.

与风相奔跑 2024-09-23 18:42:54

为什么不使用 Adwhirl。它很棒的 sdk 使您能够完全满足您的需求。您可以为不同的广告网络设置优先级设置,如果您发现一个网络比其他网络表现更好等,则可以即时更改这些设置。

它会根据请求失败或优先级处理要显示哪个广告的所有逻辑,而无需您担心。您所要做的就是创建一个 adwhirl 视图并请求广告。 Adwhirl 会完成剩下的工作,包括适当的提神。如果 iAd 第一次失败,然后显示 admob,但下一个 iAd 加载成功,则将显示它而不是 admob,假设您将 iAd 设置为更高优先级的网络。

http://adwhirl.com

Why not use Adwhirl. Its great sdk that enables you to do exactly what you need. You can set priority settings for different ad networks which can be changed on the fly if you find one network performing better than others etc.

It handles all the logic for which ad to show based on request failure or priority without you needing to worry about it. All you do is create an adwhirl view and request an ad. Adwhirl does the rest, including appropriate refreshing. If an iAd fails first time, and then shows an admob, but the next iAd loads successfully, it will be shown instead of the admob, assuming you set iAd as a higher priority network.

http://adwhirl.com

嘿嘿嘿 2024-09-23 18:42:54

您是否通过将可见设置为“否”来隐藏 ADBannerView?对于ADBannerView,如果将visible设置为NO,那么它就会停止请求广告。要“隐藏”ADBannerView,您需要将其转换到屏幕外的某个位置。

Are you hiding the ADBannerView by setting visible to NO? With the ADBannerView, if you set visible to NO, then it stops asking for ads. To "hide" the ADBannerView, you need to translate it to someplace off screen.

慕巷 2024-09-23 18:42:54

您可以使用这些控件来显示 iAd 和 adMob

iAdPlusAdMob

CJPAdController

或者这里有一个很好的图解,逐步解释

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

You can use these controls to show iAds as well as adMob both

iAdPlusAdMob

CJPAdController

Or here is nice tut that explain step by step

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

只等公子 2024-09-23 18:42:54

我有 iAds 和 Admob。

我强烈建议您首先加载 iAd,如果您没有获得广告,请使用 admob。如果你收到广告,iAd 的 ECPM 比 admob 高得多。请记住,iAd 每 30 秒刷新一次,因此 did not get ad 方法将被调用多次。

我的应用程序已获得批准,您可以获取它,Octopus Oracle。
http://kurl.ws/Ay

I have iAds and Admob.

I highly recommending loading an iAd first and if you dont get an Ad use admob. iAd has a much higher ECPM than admob if you get an ad. Remember that iAd refreshes every 30s so the did not get ad method will be called several times.

My app has been approved you can get it, Octopus Oracle.
http://kurl.ws/Ay

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文