‘windows’ was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene insteadの解決法

この記事からわかること
- Swift UIで発生する警告
- ‘windows’ was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene insteadの解決法
- UIApplicationの使い方
- UIWindowSceneの使い方
index
[open]
\ アプリをリリースしました /
‘windows’ was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead
SwiftUIで以下のコードを実装時に警告が発生しました。
AdMobを使ってバナー広告を定義しているコード
警告対象のコード
発生した警告
‘windows’ was deprecated in iOS 15.0: Use UIWindowScene.windows on a relevant window scene instead
翻訳
'windows' は iOS 15.0 で廃止されました: 代わりに関連するウィンドウシーンで UIWindowScene.windowsを使用してください
解決方法
解決方法は警告にもある通りUIWindowScene.windows
を代用して実装していきます。
上記のようにすれば警告は無くなりました。
解説
まずUIApplication
クラスはアプリケーションを制御、管理するクラスです。その中のshared
プロパティからシングルトンのUIApplicationインスタンスにアクセスできます。インスタンスから.windows
プロパティを参照してアプリの表示ウィンドウと非表示ウィンドウにアクセスできましたがiOS15以降から非推奨となってしまいました。非推奨となった機能はしばらくの間は使えますが、いつ使用不可になるかわからないので早めの対応をした方が良さそうです。
代替となっているUIWindowScene.windows
を使用するためにはUIWindowScene
インスタンスの生成と型変換が必要になります。
UIApplication.shared.connectedScenes
プロパティを通じてアクティブになっているシーンにアクセスできます。保持する方はSet形式
でUI Scene型
なので要素へのアクセスと型変換が必要です。
定義
connectedScenes
プロパティはSet
形式ですがマルチウィンドウでなければfirst
で一番最初の要素にアクセスします。as?
構文を使って型変換を試みます。
これでUIWindowScene
のインスタンスができたのであとはプロパティであるwindows
にアクセスすればOKです。
私がSwift UI学習に使用した参考書
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。