Ergänzung der iAd-Platzierung mit AdMob

Durch Klick-basierte Werbung in einer mobilen Anwendung können Sie mit Ihren kostenlosen oder preiswerten Anwendungen etwas Geld verdienen. Zwar gibt es viele Auswahlmöglichkeiten, aber viele iOS-Entwickler tendieren aus verschiedenen Gründen zur iAds-Plattform, einschließlich der Einfachheit, der Ästhetik und eines hohen CPM.

Obwohl iAds großartig ist, ist es nicht die richtige Lösung für Sie. Da iAds sehr spezifische Inhalte von Anbietern bereitstellt, die einen sehr speziellen Vertrag mit Apple haben müssen, werden sie in bestimmten Situationen häufig nicht erfüllt. Diese Situationen können sich in einer geografischen Lage befinden, in der keine Anzeigen geschaltet wurden, in fremden Ländern oder einfach nur für einen bestimmten Zeitraum ohne Publisher.

In der Produktionsversion der von mir erstellten Caterpillar-Anwendung habe ich iAds implementiert und festgestellt, dass die Füllrate im Bereich von 75% liegt. Das ist nicht schlecht, AdMob liegt jedoch normalerweise im Bereich von 98%! Das bringt mich zum Zweck dieses Beitrags.

Wäre es nicht toll, eine Hybridlösung zu haben, um die Anzeigenflächen mit AdMob-Anzeigen zu füllen, wenn iAds nicht geliefert werden?


Schritt 1: iAds-Setup

Da das ist nicht ein iAds-Tutorial, beginnen wir einfach mit einem sehr einfaches iAds-Setup Es wird eine Banneransicht oben in einem regulären Fenster angezeigt UIView. Ich habe mit einer Projektvorlage für eine einzelne Ansicht begonnen und den folgenden Code dem hinzugefügt ViewController.h Datei:

 #einführen  #einführen  @Interface ViewController: UIViewController @ property (nonatomic, strong) ADBannerView * bannerView; @Ende

Dies ist lediglich die Ankündigung unserer Banneranzeige, die in der Ansicht angezeigt wird. Sehen wir uns nun den Code an, in dem das Werbebanner angezeigt wird ViewController.m:

 #import "ViewController.h" @implementation ViewController @synthesize bannerView = _bannerView; - (void) viewDidLoad [super viewDidLoad]; self.bannerView = [[ADBannerView-Zuordnung] initWithFrame: CGRectMake (0, 0, 320, 50)]; [self.bannerView setRequiredContentSizeIdentifiers: [NSSet setWithObjects: ADBannerContentSizeIdentifierPortrait, nil]]; self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; [self.bannerView setDelegate: self]; [self.view addSubview: self.bannerView];  - (void) bannerView: Banner (ADBannerView *) didFailToReceiveAdWithError: (NSError *) error NSLog (@ "iad failed");  @Ende

Dadurch wird eine ADBannerView oben im Fenster im Hochformat geladen. Wenn iAds nicht geladen werden können, werden im Moment einfach "iAd Failed" in das Protokoll geschrieben, wie Sie im sehen können bannerView: didFailToReceiveAdWithError Methode delegieren. Wir verwenden diese Delegat-Methode, um das iAd-Banner durch ein AdMob-Banner zu ersetzen.


Schritt 2: AdMob-Konfiguration

Laden Sie das iOS AdMob SDK hier herunter:

http://code.google.com/mobile/ads/download.html

Entpacke es irgendwo auf der Festplatte und ziehe jede Datei in dein Projekt. Wenn Sie gefragt werden, ob Sie die Dateien kopieren möchten, aktivieren Sie "Ja".

Es gibt auch einige Bibliotheken, die Sie verlinken müssen, um AdMob verwenden zu können:

  • AudioToolbox
  • MessageUI
  • Systemkonfiguration
  • CoreGraphics

Sobald Sie dies getan haben, sollten Sie die AdMob-Anzeigen implementieren.


Schritt 3: Füllen Sie den iAd Spot mit AdMob

Beginnen wir mit einem erneuten Besuch ViewController.h und den Code so aktualisieren, dass er wie folgt aussieht:

 #einführen  #einführen  #import "GADBannerView.h" @interface ViewController: UIViewController @ property (nonatomic, strong) ADBannerView * bannerView; @ property (nichtatomisch, stark) GADBannerView * admobBannerView; @Ende

Alles, was wir hier gemacht haben, war unserer Klasse zu sagen, ein Delegierter zu sein GADBannerView und erstellt eine Eigenschaft für eine GADBannerView. Stellen Sie auch sicher, dass Sie @ synthetisieren die admobBannerView in der ViewController.m Datei.

Der letzte Teil besteht darin, das iAd durch das AdMob-Banner zu ersetzen, wenn es nicht geladen wird. Sie können dies tun, indem Sie dem Code etwas Code hinzufügen bannerView: didFailToReceivedAdWithError Methode in ViewController.m:

 - (void) bannerView: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *) error // 1 [self.bannerView removeFromSuperview]; // 2 _admobBannerView = [[GADBannerView-Zuordnung] initWithFrame: CGRectMake (0.0.0.0, GAD_SIZE_320x50.width, GAD_SIZE_320x50.height)]; // 3 self.admobBannerView.adUnitID = @ "a14ec3f0a2028f2"; self.admobBannerView.rootViewController = self; self.admobBannerView.delegate = self; // 4 [self.view addSubview: self.admobBannerView]; [self.admobBannerView loadRequest: [GADRequest-Anforderung]]; 

Also, hier ist was los ist:

  1. Wir entfernen das iAd-Banner aus der aktuellen Ansicht. Es wird für die Dauer dieser Sitzung nicht mehr benötigt. Sie könnten kompliziert werden und versuchen, weitere Anforderungen an iAds zu stellen. Dies ist jedoch nicht unbedingt erforderlich.
  2. Hier instanziieren wir das AdMob-Banner mit dem Hinweis, dass es ein Banner von 320 x 50 ist, und platzieren es oben im Bildschirm.
  3. Dies ist der Setup-Code für das AdMob-Banner (Sie können gerne meine Anzeigenblock-ID verwenden.).
  4. Schließlich fügen wir der Ansicht das AdMob-Banner hinzu und fordern Sie auf, eine Anzeige abzurufen.

Schritt 4: Testen Sie es

Zu beachten ist, dass iAds im Simulator niemals fehlschlagen. Wenn Sie das Internet deaktiviert hätten, könnten Sie vielleicht die AdMob-Anzeige nicht abrufen. Der beste Weg, um zu testen, besteht darin, einfach den Aufruf der bannerView: didFailToReceiveAdWithError Methode von innen viewDidLoad:

 [self bannerView: self.bannerView didFailToReceiveAdWithError: nil];

Dadurch wird das Fehlschlagen des iAd simuliert und der Code zum Abrufen und Anzeigen der AdMob-Anzeigen durchlaufen.


Schritt 5: Letzte Schritte

Nun, da wir diese duale Lösung einsetzen, ist es sehr unwahrscheinlich, dass der Benutzer dies tut Gewohnheit eine Anzeige sehen Es besteht jedoch immer noch die geringe Chance, dass sowohl iAd als auch AdMob ausfallen. In diesem Fall möchte ich dem Benutzer eine Pause geben und ihm nichts zeigen. Für den Tag so etwas wie ein Werbegeschenk;). Die letzte Methode wird also aufgerufen, wenn AdMob nicht geladen wird.

 - (void) adView: (GADBannerView *) view didFailToReceiveAdWithError: (GADRequestError *) Fehler [self.admobBannerView removeFromSuperview]; 

Wie zu erwarten, entfernen wir die Ansicht von AdMob vom Bildschirm, und der Benutzer gewinnt!


Einpacken

Ich hoffe, dass Sie dieses Tutorial für nützlich fanden jeden Cent aus Ihren Benutzern bluten lassen Ihre Entwicklungsbemühungen. Obwohl ich AdMob verwendet habe, steht es Ihnen frei, dasselbe Entwurfsmuster zu verwenden, um beliebige Ad-Netzwerke zu kombinieren / verketten, mit denen Sie arbeiten möchten. Sie können den Quellcode für dieses Tutorial ganz oben herunterladen.

Wenn Sie Fragen oder Kommentare haben, können Sie sie hier lassen oder mich auf Twitter schreiben.

Glückliche Kodierung!