2016-05-10 12 views
0

SWIFT zu erzeugen - AdMobAdMob eine lange Zeit

Ich habe ein tabBarController mit 4 Ansichten, von denen 3 Ich habe ein GADBanner auf ihnen angezeigt. Sie benötigen ungefähr eine Minute, bevor die Testanzeige erscheint. In einer anderen meiner Apps wird es innerhalb von ein paar Sekunden generiert, aber das ist in einer einzigen Ansicht.

Ich habe die Funktion loadBanner in meinem App-Delegaten implementiert, sodass keine neue Anzeige generiert wird, wenn sich die Ansicht ändert. Es funktionierte gut mit iAd, aber nicht mit AdMob.

In meiner appDelegate.swift Datei ich die folgende Funktion in didFinishLaunchingWithOptions nennen:

func loadBanner() { 

    let testAdId = "ca-app-pub-3940256099942544/2934735716" 

     banner = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait) 
     banner.adUnitID = testAdId 

    let req : GADRequest = GADRequest() 
    banner.loadRequest(req) 
    banner.frame = CGRectMake(100, 100, banner.frame.size.width, banner.frame.size.height) 
} 

und dann in viewWillAppear für jeden View-Controller habe ich folgendes:

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
let VCBanner = appDelegate.banner 
VCBanner.rootViewController = self 
VCBanner.center = CGPoint(x: view.frame.midX, y: view.frame.height - VCBanner.frame.height/2) 
view.addSubview(VCBanner) 

So funktioniert es großartig, es einfach dauert so lange, dass der Benutzer wahrscheinlich fertig ist!

Irgendwelche Ideen, warum das passiert?

Antwort

1

So wie ich kein Glück hatte, zu erreichen. Ich kam zu einer anderen Lösung, die gut funktioniert, nicht sicher, ob es der beste Weg ist, aber hier ist es.

In der ursprünglichen ViewController (die, die zuerst angezeigt wird). Ich erklärte eine globale Variable var banner : GADBannerView! und in viewDidAppear() lief ich die Funktion loadBanner():

let testAdId = "ca-app-pub-3940256099942544/2934735716" 

func loadBanner() { 
    banner = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait) 
    banner.adUnitID = testAdId 

    banner.rootViewController = self 
    let req : GADRequest = GADRequest() 
    banner.loadRequest(req) 
    banner.frame = CGRectMake(0, self.view.frame.height - banner.frame.height, banner.frame.size.width, banner.frame.size.height) 

    self.view.addSubview(banner) 
} 

Jetzt, da es sich um eine globale Variable (deklariert außerhalb der Klasse) ist, es ist von allen Viewcontrollers. So, jetzt in jedem der Viewcontrollers ich die Anzeige erscheinen soll in ich gerade in viewDidAppear() wie folgt aufrufen können:

self.view.addSubview(banner) 

und das funktioniert nur, wie ich hoffte!

+0

Danke, ich kratzte mich am Kopf, um herauszufinden, wie man dasselbe Banner in der tabBarController App anzeigt. – sc13

Verwandte Themen