SwiftUI | iPadだけでGoogle AdMob広告が表示されないときの対処方法

SwiftUI

SwiftUIでiPadだけでGoogle AdMob広告が表示されないときの対処方法を説明する。

iPhoneにはAdMob広告が表示できている。

iPadにAdMob広告が表示されない。

結論

原因はiPadが複数ウィンドウに対応していることである。

iPad での複数のウィンドウのサポート  |  iOS  |  Google for Developers

具体例

下記記事のコードから関係するコードを抜き出して説明する。

makeUIView()という関数が下記のような記述だと複数ウィンドウに対応しないためiPadにAdMob広告が表示されない。

    func makeUIView(context: Context) -> GADBannerView {
        
        let adView = GADBannerView(adSize: GADAdSizeBanner)
        
        adView.adUnitID = unitID
        adView.rootViewController = UIApplication.shared.getRootViewController()
        adView.delegate = context.coordinator
        adView.load(GADRequest())
        
        return adView
    }

sceneを指定すると複数ウィンドウに対応するようになる。

    func makeUIView(context: Context) -> GADBannerView {
        
        let adView = GADBannerView(adSize: GADAdSizeBanner)
        let request = GADRequest()  // 追加
        request.scene = UIApplication.shared.connectedScenes.first as? UIWindowScene  // 追加
        
        adView.adUnitID = unitID
        adView.rootViewController = UIApplication.shared.getRootViewController()
        adView.delegate = context.coordinator
//        adView.load(GADRequest())  // 削除
        adView.load(request)  // 追加
        
        return adView
    }

これでAdMob広告が表示される。

環境

Xcode 13.3, Swift 5.6

まとめ

iPhoneにはAdMob広告が表示できるがiPadに表示されないという場合の対処方法を説明した。

コメント

タイトルとURLをコピーしました