情報系人間のブログ

プログラミング、開発に関することを書いていきます。

iosでadmobを複数画面で表示する

現在開発しているアプリでadmobを実装しているのですが、複数画面で表示する際にどうすればよいかを調べたのでメモ。


Google Ads Developer Blog: Creating A GADBannerView Singleton in AdMob Applications

iphone - AdMod single instance in all ViewControllers - Stack Overflow

こちらの2つを参考にするとシングルトンで管理するのが良いそうです。
設置するadmobのoriginを設定したかったのでこんな感じで書きました。

class Banner: NSObject {
   
    static let shared = Banner()
    var bannerView:GADBannerView!
    
    func setBanner<T where T:GADBannerViewDelegate,T:UIViewController>(point:CGPoint,viewController:T){
        
        if bannerView == nil {
            bannerView = GADBannerView(adSize: GADAdSizeFullWidthPortraitWithHeight(50))
            bannerView.adUnitID = ""
            bannerView.delegate = viewController
            bannerView.rootViewController = viewController
            let request = GADRequest()
            request.testDevices = [""]
            bannerView.loadRequest(request)
        }
        
        bannerView.frame.origin = point
        viewController.view.addSubview(bannerView)
    }
    
}

使うときはuiviewcontroller内で以下の様に書きます。

 Banner.shared.setBanner(CGPointMake(0,0), viewController: self)