iAd wird nach dem Aufruf seiner Delegate-Methode nicht asynchron angezeigt

8

Ich habe die iAdSuite mit Storyboards in swift repliziert und das iAd funktioniert über alle View-Controller hinweg, aber wenn die Delegate-Methode bannerViewDidLoadAd(banner: ADBannerView!) aufgerufen wird, wird die Banner-Ansicht nicht sofort angezeigt. Ich muss entweder den Simulator drehen oder zu einem anderen Tab gehen, damit er erscheint.

Ich denke, das ist der Teil von Apple Beispielcode in Objective-C, den ich nicht zu "schnell" übersetzen konnte? was dazu führen kann, dass die iAd nach dem Laden nicht asynchron angezeigt wird ...

%Vor%

Dies ist meine Klasse BannerViewManager mit den Methoden ADBannerViewDelegate .

%Vor%

BEARBEITEN

Ich habe es geschafft, den objektiven C-Code oben auf diesen Beitrag zu konvertieren SO , aber ich habe immer noch das selbe Problem. Das iAd erscheint nicht sobald es geladen ist. Es muss irgendeine Art von Änderung an der Ansicht vorgenommen werden, so dass dies geschieht, entweder durch Drehen des Geräts oder durch Antippen eines anderen Tabs usw. ...

Nun sieht mein sharedInstance so aus:

%Vor%     
Ahmed Khedr 21.12.2015, 19:55
quelle

2 Antworten

2

Ich denke, ich habe herausgefunden, was das Problem ist. Es hat nichts damit zu tun, wie ich die gemeinsame Instanz der Klasse BannerViewManager initialisiere. In der Tat stellte sich heraus, genau dasselbe Verhalten zu geben, ob% Co_de% oder die neue Swift 2.0 Weg verwendet.

Die Sache, die dazu führte, dass die iAd nicht sofort angezeigt wird, wenn dispatch_once aufgerufen wurde, ist, dass bannerViewDidLoadAd tatsächlich nie aufgerufen wurde!

Ich musste hier und da einige Druckanweisungen hinzufügen. Sowohl in meinem Code als auch im Apple Beispielcode, um zu dieser Schlussfolgerung zu gelangen.

So viewDidLayoutSubviews anstelle von setNeedsLayout erzwungenes Auslösen des layoutIfNeeded

    
Ahmed Khedr 25.12.2015, 07:39
quelle
0
  1. Im Allgemeinen fügen Sie die Haltepunkte in bannerViewDidLoadAd und einer ähnlichen Callback-Funktion an.
  2. Überprüfen Sie, ob Sie den Delegierten wie in swift als Klasse YourClassViewController: UIViewController, ADBannerViewDelegate.
  3. Überprüfen Sie Ihr Szenario, Sie sagten: "Ich muss entweder den Simulator drehen oder zu einem anderen Tab gehen, damit er erscheint", also welche Methode könnte dafür verantwortlich sein. Ich weiß, du hast es erraten.
  4. LESEN Docs, Analysieren.
Kumar Utsav 30.12.2015 12:39
quelle

Tags und Links