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に表示されないという場合の対処方法を説明した。
コメント