La pubblicità basata su clic all'interno di un'applicazione mobile è un ottimo modo per guadagnare denaro dalle applicazioni gratuite o poco costose. Mentre ci sono molte scelte là fuori, molti sviluppatori iOS tendono ad andare con la piattaforma iAds per una serie di motivi, tra cui la semplicità, l'estetica e un CPM elevato.
Anche se iAds è fantastico, non è proprio il proiettile d'argento che potresti cercare. Essendo che iAds offre contenuti molto specifici da fornitori che devono avere un contratto molto specifico con Apple, spesso non riescono a soddisfare in determinate situazioni. Queste situazioni potrebbero trovarsi in una geolocalizzazione in cui non sono stati inseriti annunci, paesi stranieri o semplicemente mancanza di editori per un determinato periodo di tempo.
Nella versione di produzione dell'applicazione Caterpillar che ho creato, ho implementato iAds e ho notato che il tasso di riempimento rientra nell'intervallo del 75%. Quello è Non male, tuttavia, AdMob si trova in genere in un intervallo compreso tra il 98%! Questo mi porta allo scopo di questo post.
Non sarebbe bello avere una soluzione ibrida per riempire gli spot pubblicitari con gli annunci AdMob quando iAds non riesce a fornire?
Poiché questo è non un tutorial di iAds, stiamo per iniziare con a molto semplice configurazione di iAds. Sarà una vista banner nella parte superiore di un normale UIView
. Ho iniziato con un modello di progetto a vista singola e ho aggiunto il seguente codice al ViewController.h
file:
#importare#importare @interface ViewController: UIViewController @property (nonatomic, strong) ADBannerView * bannerView; @fine
Questo è solo la dichiarazione del nostro banner pubblicitario che verrà visualizzato nella vista. Ora, diamo un'occhiata al codice per visualizzare il banner pubblicitario all'interno di ViewController.m
:
#import "ViewController.h" @implementation ViewController @synthesize bannerView = _bannerView; - (void) viewDidLoad [super viewDidLoad]; self.bannerView = [[ADBannerView alloc] 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: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *) error NSLog (@ "iad failed"); @fine
Questo carica un ADBannerView nella parte superiore della finestra impostata in modalità verticale. A partire da ora, quando iAds non viene caricato, stamperà semplicemente "iAd Failed" sul log come puoi vedere nel bannerView: didFailToReceiveAdWithError
metodo delegato. Faremo uso di questo metodo delegato per sostituire il banner iAd con un banner AdMob.
Inizia scaricando l'SDK AdMob iOS qui:
http://code.google.com/mobile/ads/download.html
Estrarlo da qualche parte sul disco e trascinare ogni file nel progetto. Quando viene chiesto se si desidera copiare i file, selezionare Sì.
Esistono anche alcune librerie a cui devi collegarti per poter utilizzare AdMob:
Dopo averlo fatto, dovresti essere pronto per implementare gli annunci AdMob.
Iniziamo con la rivisitazione ViewController.h
e aggiornando il codice per assomigliare a questo:
#importare#importare #import "GADBannerView.h" @interface ViewController: UIViewController @property (nonatomic, strong) ADBannerView * bannerView; @property (nonatomic, strong) GADBannerView * admobBannerView; @fine
Tutto quello che abbiamo fatto qui è stato dire alla nostra classe di essere un delegato di GADBannerView
e creato una proprietà per a GADBannerView
. Inoltre, assicurati che tu @sintetizzare
AdmobBannerView in ViewController.m
file.
L'ultima parte è quella di sostituire iAd con il banner AdMob quando non riesce a caricare. Questo può essere fatto aggiungendo del codice al bannerView: didFailToReceivedAdWithError
metodo in ViewController.m
:
- (vuoto) bannerView: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *) error // 1 [self.bannerView removeFromSuperview]; // 2 _admobBannerView = [[GADBannerView alloc] 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 request]];
Quindi, ecco cosa sta succedendo:
Una cosa da notare è che non vedrai mai l'errore di iAd nel simulatore. Forse se avessi Internet disabilitato potresti, ma non saresti nemmeno in grado di recuperare l'annuncio AdMob. Il modo migliore per testare è semplicemente forzare la chiamata di bannerView: didFailToReceiveAdWithError
metodo dall'interno di viewDidLoad
:
[auto bannerView: self.bannerView didFailToReceiveAdWithError: nil];
Ciò simulerà il fallimento di iAd e eseguirà il codice per recuperare e visualizzare gli annunci AdMob.
Ora che abbiamo questa doppia soluzione, è molto improbabile che l'utente non lo farà vedere un annuncio. Tuttavia, c'è ancora una leggera possibilità che sia iAd che AdMob falliscano. In tal caso, mi piace dare all'utente una pausa e non mostrare loro nulla. Una specie di omaggio per il giorno;). Pertanto, il metodo finale verrà chiamato quando AdMob non riesce a caricare.
- (void) adView: (GADBannerView *) view didFailToReceiveAdWithError: (GADRequestError *) error [self.admobBannerView removeFromSuperview];
Come ci si potrebbe aspettare, quando AdMob fallisce, rimuoviamo la sua vista dallo schermo e l'utente vince!
Spero che tu abbia trovato questo tutorial utile per spurgando ogni centesimo dai tuoi utenti i tuoi sforzi di sviluppo. Sebbene io abbia utilizzato AdMob, sei libero di utilizzare questo stesso modello di progettazione per combinare / concatenare qualsiasi rete pubblicitaria con cui preferisci lavorare. Puoi scaricare il codice sorgente per questo tutorial in alto.
Se avete domande o commenti, sentitevi liberi di lasciarli qui o scrivermi su Twitter.
Buona programmazione!