Op klikken gebaseerde reclame binnen een mobiele applicatie is een geweldige manier om wat geld te verdienen met uw gratis of goedkope applicaties. Hoewel er veel keuzes zijn, hebben veel iOS-ontwikkelaars de neiging om met het iAds-platform te werken om verschillende redenen, waaronder eenvoud, esthetiek en een hoge CPM.
Hoewel iAds geweldig is, is het niet helemaal de zilveren kogel waarnaar je misschien op zoek bent. Omdat iAds zeer specifieke inhoud serveert van providers die een zeer specifiek contract met Apple moeten hebben, voldoen ze vaak niet in bepaalde situaties. Deze situaties kunnen zich bevinden in een geolocatie waarin in een bepaalde periode geen advertenties zijn geplaatst in het buitenland, of gewoon een gebrek aan uitgevers..
In de productieversie van de Caterpillar toepassing die ik heb gemaakt, heb ik iAds geïmplementeerd en vastgesteld dat de opvullingsgraad ergens in het bereik van 75% valt. dat is niet slecht, AdMob bevindt zich echter meestal ergens in het bereik van 98%! Dit brengt mij bij het doel van deze post.
Zou het niet geweldig zijn om een hybride oplossing te hebben om de advertentieruimten te vullen met AdMob-advertenties wanneer iAds niet kan leveren?
Omdat dit is niet een iAds-tutorial, we beginnen gewoon met een heel eenvoudige iAds-instelling. Het wordt een bannerweergave bovenaan een regulier UIView
. Ik ben begonnen met een projectsjabloon met één weergave en heb de volgende code toegevoegd aan de ViewController.h
het dossier:
#importeren#importeren @interface ViewController: UIViewController @property (nonatomic, strong) ADBannerView * bannerView; @einde
Dit verklaart gewoon onze banneradvertentie die in de weergave wordt weergegeven. Laten we nu eens kijken naar de code om de banner binnenin weer te geven ViewController.m
:
#import "ViewController.h" @implementation ViewController @synthesize bannerView = _bannerView; - (void) viewDidLoad [super viewDidLoad]; self.bannerView = [[ADBannerView-toewijzing] 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"); @end
Dit laadt een ADBannerView boven in het venster in de portretmodus. Vanaf nu, wanneer iAds niet laadt, zal het gewoon "iAd Failed" in het log afdrukken zoals je kunt zien in de bannerView: didFailToReceiveAdWithError
gedelegeerde methode. We zullen gebruik maken van deze gedelegeerde methode om de iAd-banner te vervangen door een AdMob-banner.
Begin met het downloaden van de iOS AdMob SDK hier:
http://code.google.com/mobile/ads/download.html
Pak het ergens op de schijf uit en sleep elk bestand naar uw project. Op de vraag of je de bestanden wilt kopiëren, vink je Ja aan.
Er zijn ook enkele bibliotheken waarnaar u moet linken om AdMob te kunnen gebruiken:
Zodra u dit hebt gedaan, moet u er helemaal klaar voor zijn om de AdMob-advertenties te implementeren.
Laten we beginnen met opnieuw te bezoeken ViewController.h
en het bijwerken van de code om er zo uit te zien:
#importeren#importeren #import "GADBannerView.h" @interface ViewController: UIViewController @property (nonatomic, strong) ADBannerView * bannerView; @property (nonatomic, strong) GADBannerView * admobannerweergave; @einde
Het enige wat we hier deden was onze klas vertellen om een afgevaardigde van te zijn GADBannerView
en creëerde een eigenschap voor een GADBannerView
. Zorg er ook voor dat u @synthetiseren
de admobBannerView in de ViewController.m
het dossier.
Het laatste onderdeel is om de iAd te vervangen door de AdMob-banner wanneer deze niet kan worden geladen. Dit kan gedaan worden door wat code toe te voegen aan de bannerView: didFailToReceivedAdWithError
methode in ViewController.m
:
- (void) 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]];
Dus, hier is wat er aan de hand is:
Een ding om op te merken is dat je iAds nooit zult zien falen in de simulator. Misschien als u internet had uitgeschakeld, dan zou u de AdMob-advertentie niet eens kunnen ophalen. De beste manier om te testen is om gewoon de roep van de bannerView: didFailToReceiveAdWithError
methode van binnenuit viewDidLoad
:
[self bannerView: self.bannerView didFailToReceiveAdWithError: nil];
Hiermee wordt het mislukken van de iAd gesimuleerd en wordt de code doorlopen om de AdMob-advertenties op te halen en weer te geven.
Nu we deze dubbele oplossing hebben geïnstalleerd, is het zeer onwaarschijnlijk dat de gebruiker zal niet zie een advertentie. Er is echter nog steeds een kleine kans dat zowel iAd als AdMob falen. In dat geval wil ik de gebruiker graag een pauze geven en niets laten zien. Een beetje als een freebie voor de dag;). Dus de laatste methode wordt aangeroepen wanneer AdMob niet kan worden geladen.
- (void) adView: (GADBannerView *) view didFailToReceiveAdWithError: (GADRequestError *) error [self.admobBannerView removeFromSuperview];
Zoals te verwachten is, verwijderen we bij het mislukken van AdMob de weergave van het scherm en wint de gebruiker!
Ik hoop dat je deze tutorial nuttig hebt gevonden voor elke cent uit uw gebruikers te bloeden jouw ontwikkelingsinspanningen. Hoewel ik AdMob heb gebruikt, staat het u vrij om hetzelfde ontwerppatroon te gebruiken om alle advertentienetwerken te combineren / te ketenen waar u het liefst mee werkt. Je kunt de broncode voor deze tutorial helemaal bovenaan downloaden.
Als u vragen of opmerkingen heeft, kunt u deze hier achterlaten of me schrijven op Twitter.
Happy codering!