LoginSignup
8

More than 3 years have passed since last update.

【iOS13】Ad関連でクラッシュが急増してつまずいた

Last updated at Posted at 2019-12-17

じわじわ上がるクラッシュ件数

9月の半ばにiOS13がリリースされ、
そして、それと合わせてiPhone11(iOS13搭載)たちも発売が始まりました。

すると世にiOS13が普及するにつれ、
日毎に1日あたりのクラッシュ数が増加😱

スクリーンショット 2019-11-07 12.22.44.png

Fabricを見ると以下のエラーが起きていました。
スクリーンショット 2019-12-17 20.00.55.png

  • OS:iOS13 100%
  • 再現性:なし
  • エラー内容:
「メインスレッドからアクセスした後、バックグラウンドスレッドからレイアウトエンジンへの変更を実行しないでください。」
("tryToOptimizeReturningMutuallyExclusiveConstraints:Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.")

調べてみるとGoogleGroupsのスレッドを発見、GoogleのAdsSDK関連が原因かも。。。?
https://groups.google.com/forum/#!msg/google-admob-ads-sdk/PuHOKMX1mVI/COZUVi2KAwAJ

1,アプリを立ち上げ広告を表示する
2,リストをリロードし、そのままアプリを閉じバックグラウンドの状態にする
3,再度アプリを開く
4,開いたタイミングでクラッシュする

という事象で発生したと述べている人がいたが再現せず🤔
発生時点の10/5頃はGoogle側も「原因を調査中です、情報求む」状態。。。

iOS13からUIWebViewがこれまで以上に不安定になったり、より使用にシビアになったという点で、
UIWebView起因も考えられるとヒエラルキーで確認したところ、
スクリーンショット 2019-10-15 10.29.23.png
ちゃんと使用されており、ますます🤔??????となったところでGoogleに問い合わせを行いました。

Googleに問い合わせた

「一日に数百件のクラッシュが起きてて原因もわからないの助けて😭修正版リリース求む」
という内容とFabricの内容を転記して送信したところ以下の返信がきました。

社内のエンジニアによるスレッドを確認したところ、いろいろな調査の結果、
当該クラッシュは弊社の SDK の実装に由来するものではなく、iOS 13 の UIWebView によるものである可能性が高いと判明しております。
UIWebView は安定性に問題があることが多いため、
現在 Google Mobile Ads SDK では UIWebView の代わりに WKWebView を使えるようにするベータ機能を導入しております。
以下のように当該機能を有効にしてアプリをビルドし直していただければ問題はさしあたり解決するのではないかと思われます。

。。。。。

😲え、UIWebViewであってたの...???

ということで、

Info.plistに

Key: gad_preferred_webview
Value: wkwebview

を追加。

すると、みるみるクラッシュが激減。
スクリーンショット 2019-12-17 19.58.42.png

おそらく、まれな確率でUIWebViewがベースの広告が送られてくるってことなのでしょうか🤔
再現性がないので実際の原因が特定しきれませんでしたが、とりあえずiOS13でUIWebViewを使用すると意図しない動作不具合が起きるってのを身を以て体験しました。

最後に

WKWebView を使えるようにするベータ機能を導入しております。

デフォルトでそうしてくれ!!!!!!!!!!!!😭😭😭😭😭😭😭

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8