Создание приложения Admob для iOS, ошибка Thread 1 - PullRequest
1 голос
/ 19 марта 2020

У меня проблемы с интеграцией и инициализацией Admob с моим простым контроллером представления. Я получаю сообщение об ошибке: «Поток 1. Неустранимая ошибка: неожиданно обнаружен ноль при неявном развертывании необязательного значения». Я использовал руководство Google по запуску приложения AdMob, ниже приведен мой соответствующий код.

import UIKit

import GoogleMobileAds

class ViewController: UIViewController, GADBannerViewDelegate {
    var bannerView: GADBannerView!


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.

    bannerView.adUnitID = "ca-app-pub-xxxxx/xxxxx" // line with error
    bannerView.rootViewController = self
    bannerView.load(GADRequest())
    // In this case, we instantiate the banner with desired ad size.
    bannerView = GADBannerView(adSize: kGADAdSizeBanner)


    bannerView.delegate = self

    func addBannerViewToView(_ bannerView: GADBannerView) {
        bannerView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(bannerView)
        view.addConstraints(
            [NSLayoutConstraint(item: bannerView,
                                attribute: .bottom,
                                relatedBy: .equal,
                                toItem: bottomLayoutGuide,
                                attribute: .top,
                                multiplier: 1,
                                constant: 0),
             NSLayoutConstraint(item: bannerView,
                                attribute: .centerX,
                                relatedBy: .equal,
                                toItem: view,
                                attribute: .centerX,
                                multiplier: 1,
                                constant: 0)
        ])
    }
    addBannerViewToView(bannerView)
}


/// Tells the delegate an ad request loaded an ad.
func adViewDidReceiveAd(_ bannerView: GADBannerView) {
    print("adViewDidReceiveAd")
}

/// Tells the delegate an ad request failed.
func adView(_ bannerView: GADBannerView,
            didFailToReceiveAdWithError error: GADRequestError) {
    print("adView:didFailToReceiveAdWithError: \(error.localizedDescription)")
}

/// Tells the delegate that a full-screen view will be presented in response
/// to the user clicking on an ad.
func adViewWillPresentScreen(_ bannerView: GADBannerView) {
    print("adViewWillPresentScreen")
}

/// Tells the delegate that the full-screen view will be dismissed.
func adViewWillDismissScreen(_ bannerView: GADBannerView) {
    print("adViewWillDismissScreen")
}

/// Tells the delegate that the full-screen view has been dismissed.
func adViewDidDismissScreen(_ bannerView: GADBannerView) {
    print("adViewDidDismissScreen")
}

/// Tells the delegate that a user click will open another app (such as
/// the App Store), backgrounding the current app.
func adViewWillLeaveApplication(_ bannerView: GADBannerView) {
    print("adViewWillLeaveApplication")
}
let adSize = GADAdSizeFromCGSize(CGSize(width: 300, height: 50))
}

Большое спасибо!

1 Ответ

0 голосов
/ 19 марта 2020

Вы должны инициализировать bannerView, прежде чем получить доступ к его свойствам, переместиться вверх по строке инициализатора.

bannerView = GADBannerView(adSize: kGADAdSizeBanner) //<---- move up to here.
bannerView.adUnitID = "ca-app-pub-xxxxx/xxxxx"
bannerView.rootViewController = self
bannerView.load(GADRequest())

bannerView = GADBannerView(adSize: kGADAdSizeBanner)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...