Klikkbasert annonsering i et mobilprogram er en fin måte å tjene penger på gratis eller rimelige applikasjoner. Selv om det er mange valg der ute, har mange iOS-utviklere en tendens til å gå med iAds-plattformen av ulike grunner, inkludert enkelhet, estetikk og høy CPM.
Selv om IAds er flott, er det ikke helt sølvkulen du kanskje leter etter. Å være at iAds serverer svært spesifikt innhold fra leverandører som må ha en veldig spesifikk kontrakt med Apple, klarer de ofte ikke å oppfylle i visse situasjoner. Disse situasjonene kan være i en geolokasjon at annonser ikke har blitt plassert i, utenlandske land, eller bare mangel på utgivere for en gitt tidsperiode.
I produksjonsversjonen av Caterpillar-applikasjonen jeg opprettet implementerte jeg iAds og la merke til at fyllhastigheten faller et sted i 75% -området. det er ikke verst, men AdMob er vanligvis et sted i 98% rekkevidde! Dette bringer meg til formålet med dette innlegget.
Ville det ikke vært bra å ha en hybridløsning for å fylle annonseplassene med AdMob-annonser når iAds ikke leverer?
Siden dette er ikke en iAds opplæring, vi skal bare begynne med a veldig Enkel iAds-oppsett. Det vil bli en bannervisning på toppen av en vanlig UIView
. Jeg har begynt med en enkeltvisnings prosjektmal og lagt til følgende kode til ViewController.h
fil:
#importere#importere @interface ViewController: UIViewController @property (ikkeatomisk, sterk) ADBannerView * bannerView; @slutt
Dette erklærer bare vår bannerannonse som vil bli vist i visningen. La oss nå se koden for å vise annonsebanneret på innsiden av 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, null]]; self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; [self.bannerView setDelegate: self]; [self.view addSubview: self.bannerView]; - (void) bannerView: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *) feil NSLog (@ "iad failed"); @slutt
Dette laster opp en ADBannerView øverst i vinduet i stående modus. Fra nå, når iAds ikke laster, vil det bare skrive ut "IAd mislyktes" til loggen som du kan se i bannerView: didFailToReceiveAdWithError
delegere metode. Vi vil benytte seg av denne delegatemetoden for å erstatte iAd-banneret med et AdMob-banner.
Start med å laste ned iOS AdMob SDK her:
http://code.google.com/mobile/ads/download.html
Trekk den ut et sted på disken, og dra alle filer inn i prosjektet. Når du blir spurt om du vil kopiere filene i, sjekk ja.
Det er også noen biblioteker som du må koble inn, for å kunne bruke AdMob:
Når du har gjort dette, bør du være klar til å implementere AdMob-annonsene.
La oss begynne med å revidere ViewController.h
og oppdatering av koden for å se slik ut:
#importere#importere #import "GADBannerView.h" @interface ViewController: UIViewController @property (ikkeatomisk, sterk) ADBannerView * bannerView; @property (nonatomic, strong) GADBannerView * admobBannerView; @slutt
Alt vi gjorde her var å fortelle vår klasse å være en delegat av GADBannerView
og opprettet en eiendom for en GADBannerView
. Sørg også for at du @synthesize
admobBannerView i ViewController.m
fil.
Den siste delen er å erstatte iAd med AdMob-banneret når det ikke lastes. Dette kan gjøres ved å legge til noen kode til bannerView: didFailToReceivedAdWithError
metode i ViewController.m
:
- (void) bannerView: (ADBannerView *) banner didFailToReceiveAdWithError: (NSError *) feil // 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 = selv; self.admobBannerView.delegate = self; // 4 [self.view addSubview: self.admobBannerView]; [self.admobBannerView loadRequest: [GADRequest request]];
Så, her er det som skjer:
En ting å merke seg er, vil du aldri se IAds mislykkes i simulatoren. Kanskje hvis du hadde Internett deaktivert, kan du, men da ville du ikke engang kunne hente AdMob-annonsen. Den beste måten å teste på er å bare tvinge anropet til bannerView: didFailToReceiveAdWithError
metode fra innsiden av viewDidLoad
:
[self bannerView: self.bannerView didFailToReceiveAdWithError: null];
Dette simulerer iAd-feilen og kjører gjennom koden for å hente og vise AdMob-annonsene.
Nå som vi har denne to løsningen på plass, er det svært lite sannsynlig at brukeren vil ikke se en annonse. Det er imidlertid fortsatt liten sjanse for at både iAd og AdMob mislykkes. I så fall liker jeg å gi brukeren en pause og ikke vise dem noe. Sort som en freebie for dagen;). Så vil den endelige metoden bli kalt når AdMob ikke laster inn.
- (void) adView: (GADBannerView *) visning didFailToReceiveAdWithError: (GADRequestError *) feil [self.admobBannerView removeFromSuperview];
Som du kanskje forventer, når AdMob feiler, fjerner vi visningen fra skjermen og brukeren vinner!
Jeg håper at du har funnet denne opplæringen nyttig for bløder hver krone ut av brukerne Din utviklingsarbeid. Selv om jeg har brukt AdMob, er du fri til å bruke det samme designmønsteret til å kombinere / kjede noen av de annonsenettverkene du foretrekker å jobbe med. Du kan laste ned kildekoden for denne opplæringen helt øverst.
Hvis du har spørsmål eller kommentarer, vær så snill å forlate dem her eller skriv meg på Twitter.
Glad koding!