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?
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.
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:
Sobald Sie dies getan haben, sollten Sie die AdMob-Anzeigen implementieren.
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:
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.
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!
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!