2013-01-23 7 views
7

Ich verwende Google AdMob SDK (das letzte kürzlich heruntergeladene) in meiner App.Google AdMob GADBannerView erste Anfrage dauert lange und friert UI ein

Wenn meine App gestartet wird, bleibt sie für 4-5 Sekunden stehen, bis die Anzeige geladen und angezeigt wird. Danach läuft es reibungslos. Wenn ich die Banneranforderungszeile auskommentiere, wird die App normal gestartet.

Ich habe eine benutzerdefinierte Hilfsklasse gemacht, in der ich den folgenden Code habe.

- (void) getGoogleBanner:(UIViewController *) targetController 
{ 
    self.googleBannerView.rootViewController = targetController; 
    [self.googleBannerView.rootViewController.view addSubview:self.googleBannerView]; 
    [self.googleBannerView setDelegate:self]; 
    GADRequest* request = [GADRequest request]; 
    [self.googleBannerView loadRequest:request]; 
} 

wo

  • googleBannerView eine Eigenschaft meiner Klasse ist, und hat den Typ GADBannerView
  • ich die Bildgröße und Anzeigenblock-ID
  • targetController vorher richtig eingestellt ist der Controller Ich möchte um das Banner zu
  • hinzuzufügen Ich rufe die [CustomClass getGoogleBanner: self] -Methode in viewDidAppear von verschiedenen Controllern und das Banner erfolgreich, außer das erste Ladeproblem.

Ich würde gerne wissen, ob jemand auf dieses Problem gestoßen ist, und wie es gelöst ist. Ich bin offen für alle Ideen, die das Problem des Einfrierens beseitigen würden. Ich habe versucht, den Code in einen Hintergrund-Thread zu schreiben, aber ich habe versagt, weil ich nicht sehr erfahren bin.

Jede Hilfe wird sehr geschätzt, danke im Voraus.

+0

Können Sie genauer erläutern, welche Art von UI Sie speziell haben und wo sich der GADBannerView in Ihrer Hierarchie befindet? Eine Verzögerung von 4-5 Sekunden klingt ziemlich groß, machst du eine Art komplexe Zeichnung/Animationen? – RajPara

+0

Ich mache keine komplexe Zeichnung. Tatsächlich besteht die gesamte Anwendung aus UIViews und 2-3 TableViews. Die Tische haben nie mehr als 50 Elemente. Ich habe auch versucht, die loadRequest: -Methode zu einem Hintergrund-Thread zu senden, aber es hat nicht funktioniert, mit einem Fehler, der mit dem Ändern des Hauptfensters von einem Hintergrundthread verbunden ist. Diese Funktion ist wahrscheinlich bereits asynchron, da es sich um eine standardmäßige Google-Methode handelt und die Antwort vom Google Banner View-Delegaten erfasst wird. –

+0

es passiert er mir gleich! Hast du irgendeine Lösung gefunden? – Aitul

Antwort

2

Ich habe das Problem nur beim Ausführen im Simulator, also wenn dies der Fall ist, sollten Sie sich wahrscheinlich keine Sorgen machen.

Von dem, was ich finden konnte, beim Aufruf der loadRequest Methode, ruft das Framework auch canOpenURL: Methode (UIApplication). Von einigen Tests, die ich lief (auf Simulator und iOS-Geräten mit 5.1.1 und 6.1.3), friert canOpenURL gelegentlich für ein paar Sekunden auf dem Simulator (sobald es dauerte 20 Sekunden, um zurückzukehren), funktioniert jedoch gut auf den Geräten .