iAds在iPhone上插播广告?

我的开发人员和我以前曾试图在iPhone和iPad上加载插页式广告,但只能在iPad上运行。

在我们的testing中,我们发现iPhone上不支持插页式广告,但自iOS7发布以来,有些人现在认为这是可能的。

不过,我找不到任何体面的文件。 这个Stack问题让我不禁想知道iPhone上的iAd&Admob插页式集成

那么,在iPhone上使用iAds可以实现全屏插页式广告吗?

我也一直在等待来自iAd的iPhone插页式广告。 我终于实现了我的应用程序之一,它正在运行,并显示testing广告就好了。 该应用程序目前正在审查中,一旦获得批准,我将更新我的答案,并且可以testing是否投放了任何实际的广告。 同时,以下是我用于实施iAd插页式广告的代码:

ViewController.h

@interface ViewController : UIViewController <ADInterstitialAdDelegate> { ADInterstitialAd *interstitial; BOOL requestingAd; } -(void)showFullScreenAd; 

ViewController.m

 -(void)viewDidLoad { requestingAd = NO; } // Interstitial iAd -(void)showFullScreenAd { // Check if already requesting ad if (requestingAd == NO) { [ADInterstitialAd release]; interstitial = [[ADInterstitialAd alloc] init]; interstitial.delegate = self; self.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual; [self requestInterstitialAdPresentation]; NSLog(@"interstitialAdREQUEST"); requestingAd = YES; } } -(void)interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error { interstitial = nil; [interstitialAd release]; [ADInterstitialAd release]; requestingAd = NO; NSLog(@"interstitialAd didFailWithERROR"); NSLog(@"%@", error); } -(void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd { NSLog(@"interstitialAdDidLOAD"); if (interstitialAd != nil && interstitial != nil && requestingAd == YES) { [interstitial presentFromViewController:self]; NSLog(@"interstitialAdDidPRESENT"); } } -(void)interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd { interstitial = nil; [interstitialAd release]; [ADInterstitialAd release]; requestingAd = NO; NSLog(@"interstitialAdDidUNLOAD"); } -(void)interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd { interstitial = nil; [interstitialAd release]; [ADInterstitialAd release]; requestingAd = NO; NSLog(@"interstitialAdDidFINISH"); } 

我只是在用户执行特定操作后调用-(void)showFullScreenAd 。 有关更多信息,请参阅UIViewController iAd Additions Reference

编辑:01/03/14该应用程序更新被批准,并已经活了12个小时了。 截至目前,我还没有收到任何插页式广告。 这可能是由于缺乏iPhone上的插页式广告的广告资源,或者可能与我在iTunes Connect上的iAd模块中收到的以下消息有关。 消息读取

当您提交您的应用程序[应用程序名称]以供审批时,iAd也会审核该应用程序以用于应用程序networking,以确定是否适合接收来自iAd广告客户的广告。 一旦您的应用获得批准,您就可以开始为在您的应用中运行的广告赚取收入。

我以前从未收到过此消息,一旦在App Store中发布更新,我通常会收到“您的应用现在有资格接收广告”消息。 这要么是因为我的应用程序中插播广告的新实施,要么是苹果已经更新了一些iAd程序。

如果当我开始接收插页式广告时,会再次更新答案。 在此期间,您可以在我的应用+行情中自行testing 。 上面的代码被调用,并且一旦用户通过Facebook在应用程序中共享,插页式广告应该显示。

编辑:01/07/14直接联系了iAd,今天收到回复

Daniel Daniel,您好,初始填充率将反映iOS 7上最近推出的插页式广告。感谢您在我们加强广告投放的过程中的耐心等待。 如果您还没有,我们build议您在您的应用程序中集成标准纵向横幅广告横幅广告,以充分利用所有可用的广告资源。 最后,为了将来的参考,当您提交您的应用程序批准,它也将由iAd审查,以确定从iAd广告商接收广告的适当性。 因此,启用新版iAd的应用可能需要几天的时间才能开始接收广告展示。 最好的问候,iAd Appnetworking支持

因此,适用于iPhone的插页式广告适用于iOS 7.0及更高版本,但目前填充率较低。

我原来的答案开始变老,所以这是一个更新的Swift实现:

此实施方式使用Manual ADInterstitialPresentationPolicy因此我们可以按自己的时间间隔呈现我们的插页式广告。 手动呈现插页式广告时,不会使用自己的closuresbutton加载自己。 所以,我所做的就是创build一个UIView来呈现插页式广告,并使用插页式广告的委托方法来closuresUIView 。 testing时仍会出现与从iAdnetworking接收广告的不一致。 有时候您会收到一则广告,有时无法加载,这使得我们可能需要一个新的广告,有时甚至没有任何反应。 这似乎是iAd的插页式广告的本质。

 import UIKit import iAd // Import iAd class ViewController: UIViewController, ADInterstitialAdDelegate { // Include the delegate var iAdInterstitial = ADInterstitialAd() // Our ad var iAdInterstitialView = UIView() // View to present our ad in var adLoaded = false // Bool to keep track if an ad is loaded or not override func viewDidLoad() { super.viewDidLoad() setupAd() } func setupAd() { // Set presentation to manual so we can choose when to present the interstitial // Setting this will also fetch an interstitial ad for us self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Manual iAdInterstitial.delegate = self // Set the delegate // Make our view the same size as the view we will be presenting in iAdInterstitialView.frame = self.view.bounds } func requestNewAd() { // This will fetch an ad for us ViewController.prepareInterstitialAds() println("Requesting new ad") } @IBAction func presentAdButton(sender: AnyObject) { if (adLoaded) { // We have an ad that is loaded so lets present it self.view.addSubview(iAdInterstitialView) iAdInterstitial.presentInView(iAdInterstitialView) } else { // No ad has been loaded println("Ad not loaded") } } func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) { // Kinda works as expected // Sometimes is called prematurely // Sometimes takes minutes after ad is dismissed to be called println("interstitialAdDidUnload") // Get new ad adLoaded = false iAdInterstitialView.removeFromSuperview() requestNewAd() } func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) { // Failed to load ad so lets try again println("didFailWithError: \(error)") requestNewAd() } func interstitialAdWillLoad(interstitialAd: ADInterstitialAd!) { // There is an ad and it has begun to download println("interstitialAdWillLoad") } func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) { // We got an ad println("interstitialAdDidLoad") adLoaded = true } func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool { println("interstitialAdActionShouldBegin") return true; } func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) { // Done with this ad. Lets get a new one println("interstitialAdActionDidFinish") iAdInterstitialView.removeFromSuperview() adLoaded = false requestNewAd() }