2010-11-23 3 views
1

-Update 12/16/2010: Es sieht aus wie es ein ähnliches Problem, wenn 4.0-Geräte mit dem 4.2 SDK Targeting ... Ihre Anwendung abstürzt sofort, wenn Sie den Interface Builder zum Erstellen Ihrer Werbebanneransicht verwendet haben. Schwache Verknüpfung des iAd-Frameworks und Re-creating der Werbebanner-Implementierung auf der Codepage der Dinge war der Fix. Dank diesen Thread von Ray Wenderlich: http://www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-appiAds „Ungültige Inhaltsgröße‚ADBannerContentSizePortrait‘übergeben ADAdSizeForBannerContentSize“ in iOS 4.2

---

Hallo, ich habe gerade versucht, iOS 4.2 SDK (endgültige) und Targeting iOS 4.0-Geräte und auch wenn mein app kompiliert meinen app zu laufen in Ordnung, ich diesen Fehler sofort beim laufen ...


*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'Invalid content size 'ADBannerContentSizePortrait' passed to 
ADAdSizeForBannerContentSize' 
... 

ich habe versucht ...


- (void)viewDidLoad { 
    self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 
} 

... aber nein Glück, immer noch den gleichen Crash-Fehler. In IB sieht es so aus, als ob die einzigen Optionen für "Sizes" "Portrait, Landscape oder Both" sind, von denen ich denke, dass iOS 4.0 kein Fan davon ist.

Hat jemand irgendwelche Vorschläge? Danke vielmals.

Antwort

0

Sie haben

- (void)viewDidLoad { self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; }

zu - (void)viewDidLoad { self.bannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait //or landscape }

zu ändern, was Sie als veraltet war, hatte Sinn seiner nicht mehr als von iOS unterstützt 4.2

+0

danke - ich stellte ursprünglich die Bannergröße in IB, die auch durch Entfernen und Hinzufügen des iAd-Framework zum Projekt behoben werden scheint. – taber

0

Es sieht so aus, als ob Sie das iAd-Framework entfernen und es mit "Add existing framework ..." wieder hinzufügen, behebt das Problem ... seltsam. Hoffe das hilft jemand anderem.

+0

Das einzige Problem ist jetzt, ich konnte nicht erfolgreich eine Anzeige im Simulator (4.0 und 4.2) laden ... diesen Fehler in bannerView bekommen: didFailToReceiveAdWithError: 'Fehler Domain = ADErrorDomain Code = 3 "Die Operation konnte nicht vervollständigt werden. Anzeigeninventar nicht verfügbar '' – taber

+0

Noch ein Hinweis - das funktioniert tatsächlich auf dem Gerät ... nur nicht im Simulator. Ich denke, es könnte ein Router oder ein kleines Problem sein. Alles jetzt eingestellt! – taber

6

Das ist für mich gearbeitet. Es scheint, dass die OS-Versionen unter 4.2 immer noch die veralteten Inhaltsgrößenkennungen benötigen, zumindest wenn das ADBannerView in Interface Builder erstellt wird. Ich habe auch das iAd-Framework als Vorsichtsmaßnahme schwach verknüpft. Ich hoffe, dass dies für jemanden hilfreich ist, und vielen Dank an die tolle Community auf dieser Seite für all die wunderbaren Informationen und Einblicke!

// if the current version of the os is less than 4.2, use the old way of defining the banner size 
if ([[[UIDevice currentDevice] systemVersion] compare:@"4.2" options:NSNumericSearch] == NSOrderedAscending) { 

    adBanner.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifier320x50]; 

    adBanner.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50; 

    NSLog(@"below 4.2"); 

} else { 

    adBanner.requiredContentSizeIdentifiers = [NSSet setWithObject:ADBannerContentSizeIdentifierPortrait]; 

    adBanner.currentContentSizeIdentifier = ADBannerContentSizeIdentifierPortrait; 

    NSLog(@"4.2 or above"); 

} 
+1

Danke. Es funktioniert perfekt für mich, als das oben genannte. – Satya

+0

Funktioniert gut. Ich verwende stattdessen float-Vergleich mit 'systemVersion': 'if ([[[UIDevice currentDevice] systemVersion] doubleValue]> = 4.2)' ' –

0

Die Antwort, die in der "Aktualisierung" der Frage gefunden wird, ist korrekt. Beachten Sie, dass zu diesem Zeitpunkt dieses Schreibens thread by Ray Wenderlich aktualisiert werden muss, da es veraltete iAd-Konstanten verwendet. Ansonsten ist es eine sehr gute Ressource, um dieses Problem zu lösen.