Ich entwickle eine iOS App und habe kürzlich das Facebook SDK für iOS integriert. Derzeit wird Version 4.11.0 mit FBAdView
und FBInterstitialAd
für Facebook Audience Network-Anzeigen verwendet. Die Implementierung in meiner App ist fast identisch mit der App AdUnitsSample im SDK.FBInterstitialAd showAdFromRootViewController Fehler
Die FBAdView
Banner-Anzeigen waren in Ordnung, aber ich habe ein ernstes Problem mit der FBInterstitialAd
gefunden. Wenn das Interstitial zum ersten Mal angezeigt wird, funktioniert es einwandfrei und wird korrekt ausgeblendet. Wenn der Nutzer jedoch durch die Anzeige klickt (um eine Webseite oder App-Store-Seite im In-App-Browser anzuzeigen) und dann die Schaltflächen "Abbrechen" oder "Fertig" verwendet, um zum Interstitial zurückzukehren und dann zurück zur App, dann zeigt dann die Anzeige bei nachfolgenden Anfragen nicht an.
Für die fehlgeschlagenen Anfragen, die loadAd
Methode funktioniert gut, und die interstitialAdDidLoad:
Delegatmethode wird wie üblich gebrannt, aber wenn ich showAdFromRootViewController:
nichts passiert nennen, abgesehen von dieser Warnung im Konsolenprotokoll:
Warning: Attempt to present <FBInterstitialAdInternal: 0x1626fc90> on <FBInterstitialAdInternal: 0x163488d0> whose view is not in the window hierarchy!
Der einzige Unterschied zwischen meiner App und der AdUnitsSample-App besteht darin, dass meine App eine XIB-basierte Benutzeroberfläche mit UINavigationController
verwendet, während die Beispielanwendung Storyboard und UITabBarController
verwendet. Der Aufruf, den ich an die Methode showAdFromRootViewController:
mache, sendet meinen Root-View-Controller als Parameter, und dies ist der UIViewController
, der gerade auf dem Bildschirm ist.
Aus der Warnung scheint es, dass das Facebook-Interstitial versucht, sich über dem vorherigen Interstitial (FBInterstitialAd
ist eine UIViewController
Unterklasse) anzuzeigen, und ich habe keine Ahnung warum. Wenn ich das nicht lösen kann, muss ich nur die Interstitial-Anzeigen löschen, was nicht gut ist.
Irgendwelche Ideen?
Update:
Nach dem AdUnitsSample App einige mehr herumspielen, erkannte ich einen weiteren Unterschied. Die Beispielanwendung verwendet ARC, meine App jedoch nicht. Sicher genug, wenn ich ARC in der Beispiel-App ausgeschaltet habe, bekam ich genau den gleichen Fehler. Ich habe keine Ahnung, wie ich das umgehen soll, und da meine App von Bibliotheken von Drittanbietern abhängt, die nicht für ARC gebaut werden, kann ich ARC nicht aktivieren.
Ich habe versucht, ARC mit -fobj-arc nur für die UIViewController-Klasse, die die FBInterstitialAd enthielt, aber ich habe immer noch die gleichen Fehler und Konsolenwarnung. –
Sie können auf AdUnitsSample App testen: 1.Deaktivieren Sie "Objective-c ARC" (Sie erhalten den Fehler) 2. Fügen Sie -fobjc-arc Flag zu InterstitialViewController (es wird keinen Fehler mehr) – lailai
FYI, meine App hat auch eine UINavigationController in der Stammansicht. – lailai