💬

SwiftUIのiPadアプリでAdMobを使うときに必要な設定

2021/04/01に公開

SwiftUIのiPadアプリでAdMobを実装したアプリを起動すると以下のエラーが発生。

<Google> Invalid Request. The GADRequest scene property should be set for applications that support multi-scene. Treating the unset property as an error while in test mode.

エラーメッセージで調べてたところ、iPadでAdMobを利用する際はGADRequest.sceneUIWindowSceneのセットが必要でした。
https://developers.google.cn/admob/ios/multiscene?hl=ja

以下のようなコードで対応しました。

let request = GADRequest()
request.scene = UIApplication.shared.connectedScenes.first as? UIWindowScene

ただし、マルチウインドウに対応したアプリではUIWindowSceneはウィンドウ毎に生成されるのでfirstが常に正しいとは限らないようです。

参考

https://developers.google.com/admob/ios/api/reference/Classes/GADRequest#scene

https://developer.apple.com/documentation/uikit/uiapplication/3197899-connectedscenes

Discussion