原因不明のエラー
現在、自分が管理しているiOSアプリでcannnot parse json
というエラーが出ました。
firebaseの使用が主な原因かと。。
stack overflowやその他のエンジニアのウェブサイトで調べても解決策がでこなくて焦っていました。
調べてみると、Safariなどでもこのようなエラーが起きていたようで、ネットワークレベルが弱いことが原因の一つであるとわかりました。
まだ再現できただけで、問題の解決はしていませんが共有いたします。
再現方法
Xcode Simulatorを使用して再現します。
まずここからAdditional tools for Xcodeをダウンロードします。
dmgの中にHardwareフォルダがあるのでそこを開きます。その中のNetwork Link Condirioner.prePaneを実行します。
すると設定の中に追加されます。macOS Venturaにしてしまったので設定画面が違うのはご了承ください...
Manage Profiles...
で写真と同じようなネットワークレベルを新しく作成します。
‹
オフラインではないが、かなり弱いネットワークにするのが重要です。
これで電波の弱いネットワークの準備ができましたので、Simulation内でネットワーク通信(httpsCallableなど)を実行すると100%ではありませんが再現が可能です。
なぜ100%出ないかは恐らく、通信が完了するまでにタイムアウトしてしまうのが原因かと思われます。
解決案
エラーハンドリングを各所できちんと実装するのが一番手っ取り早いかと思います。
ネットワーク速度を計測するという手も考えましたがさすがに手間がかかりそうですので、今回はエラーハンドリングで対処しようと思います。