我正在使用 Xcode 7.3.1 , SpriteKit 和 Swift 制作iOS 8.0+游戏。每当我向其添加AdMob横幅时,我的应用都会继续崩溃。
我几乎从这里复制了横幅代码:https://firebase.google.com/docs/admob/ios/quick-start
以下是我的代码的一部分:
class GameViewController: UIViewController, GADBannerViewDelegate{
@IBOutlet var bannerView: GADBannerView!
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(fileNamed:"GameScene") {
let skView = self.view as! SKView
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
let request = GADRequest()
bannerView.delegate = self
bannerView.adUnitID = "(myAppID)"
bannerView.rootViewController = self
bannerView.loadRequest(request)
}
}
}
它在任何模拟器上运行都很好,但它会在实际设备上崩溃应用程序。我一直收到这个错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason:
'*** setObjectForKey: object cannot be nil (key: <f0cdd52e 01000000>)'
*** First throw call stack: (0x1820b659c 0x19280c0e4 0x181fa11f8 0x1000ed1f8 0x100bbce30 0x100bbcdf0 0x100bc7854 0x100bc0120 0x100bc975c 0x100bcaf18 0x19302d2e4 0x19302cfa8)
libc++abi.dylib: terminating with uncaught exception of type NSException(lldb)
如果我删除了处理横幅广告的部分代码,我的应用就可以完美运行。
有关我可以采取哪些措施来解决问题的建议?此外,这是我第一次使用Xcode编写应用程序。
谢谢!
答案 0 :(得分:0)
花了一段时间,但我想通了。我发现 Google移动广告SDK 框架就是问题所在。版本7.9.1似乎不适用于iOS 8.0,但在iOS 9上运行良好。我猜测这就是为什么它在我的设备上运行不好,因为我是使用SDK 7.9.1运行iOS 8。使用早期版本(如7.8.0),广告可以在iOS 8设备上轻松运行。