【iOS13】最新のAdMob SDKに更新する時の注意点【UIWebViewが廃止】
iOS13になり、いくつか「今までOKだったけどこれからはダメ」というものが増えました。
詳しくは下記あたりを参照してほしいのですが、その中でも「今後はUIWebViewを使ったアプリは申請できなくなる」というのが最も大きい変更かなと思っています。
・iOS 13における必須対応について
・2020年中に対応すべき iOS13 以降向けの対応 (WebView, Split View など)まとめと補足
・iOS13対応をまとめてみた
実際にいつごろから本格的に禁止になるかはわかりませんが、
(上記サイトには2020年4月から新規アプリでUIWebViewを使っているものはリジェクト、既存アプリは2020年12月末でリジェクトと書いています。まぁアップルさんは微妙にずれることもあるので)
今後禁止になるのは間違いないので今から対応しましょう。
アプリ内のUIWebViewを、今後推奨されているWKWebViewに変更するのはそんなに大変じゃないっぽいです。私のアプリも既存のUIWebViewクラスのクラス名をWKWebViewに変更して、XIB内のWebViewをWeb Kit Viewに変えるだけでいけました。
<2020年5月6日:追加>
全然違いました。UIWebViewからWKWebViewへの変更で注意する点についても後日書きます。
WKWebView対応のAdMobのSDKを使用する時の注意点
さて本題ですが、上記UIWebViewの廃止に伴い、AdMobがWKWebViewを使ったSDKをリリースしました。AdMobを利用している方はこちらを早めに入れておいた方がいいと思います。
一点注意点というか、私が勝手にハマったところなのですが、AdMobの最新SDKをダウンロードすると下記のフレームワークが入っています。
・GoogleAppMeasurement.framework
・GoogleMobileAds.framework
・GoogleUtilities.xcframework
・nanopb.xcframework
・Licenses
最後の「Licenses」は必要ないとして、AdMobのスタートガイドにしたがって上記4つのフレームワークをプロジェクトに突っ込んだら、なんかエラーがでました。
エラーの内容は「必要なフレームワークが足りない」とのことだったので、エラー文にしたがって「webKit.framework」と「JavaScriptCore.framework」を追加したらエラーが消えました。
でも、なーんかおかしいな〜スタートガイドにそんなの入れろって書いてないのにな〜なんて思って見直してみたら、上記4つのフレームワークの「GoogleUtilities.xcframework」と「nanopb.xcframework」が「.xcframework」って書いてありました。
聞いたこともなかったので調べたら、xcframeworkというのはいろんなプラットフォームで使うフレームワークを1まとめにできるものらしいです。
xcframeworkフォルダの中を見ると、
・ios-armv7_arm64
・ios-i386_x86_64-simulator
・ios-x86_64-maccatalyst
というフォルダがあり、その中にそれぞれフレームワークが入っています。
AdMobをiOSアプリで表示するのに必要なのは「ios-armv7_arm64」フォルダの中にあるフレームワークだけなので、「GoogleUtilities.xcframework」と「nanopb.xcframework」の中の「ios-armv7_arm64」からそれぞれ「GoogleUtilities.framework」と「nanopb.xcframework」を選んでプロジェクトに突っ込めばOKです。
これでさっき入れた「webKit.framework」と「JavaScriptCore.framework」を消してもエラーが出ずに広告が表示されました。
知ってる人からしたら当たり前のことだったのかもしれませんが、私はハマったので書いておきます。
あと、個人的にはiPadを12.9インチ対応せずに自動で引き延ばしているため、Launch Imageが廃止になってLaunch StoryboardやXIBにしなくてはいけないのがめんどくさいです・・・。
Launch Storyboardとかにしたら12.9インチなどのiPadで起動した時に引き延ばされず、ちゃんとそれぞれの画面サイズに対応しなくちゃいけないので・・・