我以这种方式构建了我的应用程序,一切似乎或多或少都在工作。在听说了众所周知的低 iAd 填充率后,我决定这将是最好的方法,但我尝试用谷歌搜索它,但我找不到任何其他人在他们的应用程序中像这样实施广告的记录。这是否违反 TOS?
6 回答
为什么不使用 Adwhirl。它很棒的 sdk 可以让您完全按照自己的需要去做。您可以为不同的广告网络设置优先级设置,如果您发现一个网络的表现优于其他网络等,可以随时更改这些设置。
它会根据请求失败或优先级处理要展示的广告的所有逻辑,而您无需担心。您所要做的就是创建一个 adwhirl 视图并请求一个广告。Adwhirl 完成其余的工作,包括适当的提神。如果 iAd 第一次失败,然后显示 admob,但下一个 iAd 加载成功,则将显示它而不是 admob,假设您将 iAd 设置为更高优先级的网络。
您是否通过将可见设置为 NO 来隐藏 ADBannerView?使用 ADBannerView,如果您将可见设置为 NO,则它会停止请求广告。要“隐藏” ADBannerView,您需要将其翻译到屏幕外的某个位置。
您可以使用这些控件来显示 iAd 和 adMob
或者这里是一步一步解释的好图
http://mobile.tutsplus.com/tutorials/iphone/supplementing-iad-placement-with-admob/
我有 iAds 和 Admob。
我强烈建议先加载 iAd,如果您没有收到广告,请使用 admob。如果您收到广告,iAd 的 ECPM 比 admob 高得多。请记住,iAd 每 30 秒刷新一次,因此 did not get ad 方法将被多次调用。
我的应用程序已经获得批准,你可以得到它,八达通甲骨文。 http://kurl.ws/Ay
您可以使用 AdWhirl,它的最佳教程在这里 教程
我最终采用了这个策略:
首先,我从情节提要中创建了 2 个出口,一个用于 the 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 秒才能显示谷歌广告。因此,在显示谷歌广告之前,您基本上想查看 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())
}
}
所以在显示 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
您可以轻松地根据您的实现调整此逻辑。