2013-12-23 13 views
16

Mein Entwickler und ich hatten zuvor versucht, Interstitial-Anzeigen auf iPhone und iPad zu laden, schafften es jedoch nur, dass dies auf dem iPad funktionierte.iAds interstitielle Werbung auf dem iPhone?

Während unserer Tests haben wir festgestellt, dass Interstitials auf dem iPhone nicht unterstützt werden, aber seit der Veröffentlichung von iOS7 sagen einige Leute, dass dies möglich ist.

Allerdings kann ich dazu keine anständige Dokumentation finden. Diese Stapel Frage hat mich wieder wundern, obwohl iAd & Admob Interstitial Integration on iPhone

Also, sind Vollbild-Interstitials auf dem iPhone mit iAds möglich?

+0

Sie unterstützen iAds noch nicht, aber viele andere Netzwerke wie Admob, Amazon und Chartboost. Sehen Sie sich http://appodeal.com/+signup an. Auf Android bezahlen sie durchschnittlich einen eCPM von 7-9 $ und unterstützen Interstitials und Interstitial-Videos! –

Antwort

20

Ich habe auch auf Interstitial-Anzeigen für iPhone von iAd gewartet. Ich habe es endlich in einer meiner Apps implementiert und es läuft und zeigt Test-Ads ganz gut. Die App wird derzeit überprüft und ich werde meine Antwort aktualisieren, sobald sie genehmigt wurde, und ich kann testen, ob tatsächlich Anzeigen geschaltet werden. In der Zwischenzeit, hier ist der Code, den ich verwendet iAd Interstitials zu implementieren:

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

Ich nenne nur -(void)showFullScreenAd, nachdem der Benutzer führt eine bestimmte Aktion durch. Weitere Informationen finden Sie unter UIViewController iAd Additions Reference

EDIT: 01/03/14 Das Update der App wurde genehmigt und ist seit 12 Stunden live. Ich habe noch keine Interstitial iAds von diesem Moment an erhalten. Möglicherweise liegt dies am fehlenden Inventar für Interstitial-Anzeigen auf dem iPhone oder an der folgenden Nachricht, die ich in meinem iAd-Modul bei iTunes Connect erhalten habe. Die Mitteilung liest

When you submit your app, [app name], for approval, it will also be reviewed by iAd for use on the App Network to determine its appropriateness for receiving ads from iAd advertisers. Once your app is approved, you will be ready to start earning revenue for ads that run in your app.

Ich habe noch nie diese Nachricht erhalten, erhalte ich in der Regel der „Ihre App nun berechtigt sind Anzeigen erhalten“ Nachricht, sobald das Update im App Store freigegeben wird. Entweder aufgrund der neuen Implementierung von Interstitial-Anzeigen in meiner App oder weil Apple einige seiner iAd-Verfahren aktualisiert hat.

Aktualisiert die Antwort erneut, wenn und wenn ich interstitielle iAds empfange. In der Zwischenzeit können Sie es selbst auf meiner App +Quotes testen. Der oben genannte Code wird aufgerufen und eine Interstitial-Anzeige sollte angezeigt werden, sobald ein Nutzer über Facebook innerhalb der App geteilt hat.

EDIT: 01/07/14 Kontaktiert iAd direkt und erhielt eine Antwort heute

Hello Daniel, Initial fill rates will reflect the recent launch of interstitials on iOS 7. Thank you for your patience as we ramp up ad serving. If you haven't already, we recommend you integrate standard portrait and landscape iAd banners in your app to take advantage of all available types of advertising inventory. Finally, for future reference, when you submit your app for approval, it will also be reviewed by iAd to determine its appropriateness for receiving ads from iAd advertisers. Therefore, it may take a few days for your new iAd enabled app to begin receiving ad impressions. Best Regards,  iAd App Network Support

interstitielle IADs für iPhone Also, arbeiten mit iOS 7.0 und höher, aber haben eine niedrige Füllrate zur Zeit.

+0

Ist der Code iOS7 nur? Freuen Sie sich auf Ihr Update, sobald Ihre App online geht. – pixelkicks

+0

@Buckers Ja, die neuen iAd-Ergänzungen erfordern iOS 7.0 oder höher, die hier aufgeführt sind [UIViewController iAd Additions Reference] (https://developer.apple.com/library/ios/documentation/iAd/Reference/UIViewController_iAd_Additions/Reference/Reference.html # // apple_ref/occ/instm/UIViewController/requestInterstitialAdPresentation) –

+2

@DanielStormApps das funktioniert fast, nur '[interstitial presentFromViewController: self];' ist seit iOS7 veraltet. Verwenden Sie '[interstitial presentInView: self.view];' anstatt – zero3nna

2

Meine ursprüngliche Antwort ist weg, so hier Alter beginnen ist eine neuere Swift Implementierung:

Diese Implementierung eines ManualADInterstitialPresentationPolicy verwendet, so können wir unsere Interstitials in unseren eigenen Abständen präsentieren. Wenn Sie Ihr Interstitial manuell präsentieren, wird es nicht mit einer eigenen Schließen-Schaltfläche geladen, um sich selbst zu löschen.Also, was ich getan habe, ist ein UIView erstellt, um das Interstitial in und verwendet die Delegiertenmethoden des Interstitial, um die UIView zu entlassen. Die Inkonsistenz beim Erhalt einer Anzeige aus dem iAd-Netzwerk tritt weiterhin beim Testen auf. Manchmal erhalten Sie eine Anzeige, manchmal wird sie nicht geladen, sodass wir eine neue Anzeige anfordern können, und manchmal passiert gar nichts. Dies scheint nur die Natur der Interstitials von iAd zu sein.

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

Das ist großartig, danke – Pete

+0

Ich benutze obigen Code, aber immer Fehler msg didFailWithError: Fehler Domain = ADErrorDomain Code = 3 "Der Vorgang konnte nicht abgeschlossen werden.Anzeigenbestand nicht verfügbar "UserInfo = 0x7fe5584be760 {ADInternalErrorCode = 3, NSLocalizedFailureReason = Anzeigenbestand nicht verfügbar, ADInternalErrorDomain = ADErrorDomain} Neue Anzeige anfordern Anzeige nicht geladen -------- ich setze Einstellung // Entwickler // Füllrate auf immer 100% –