Xcodeからデバイスのネットワーク状況などを操作する
iPhoneやiPadでネットワーク環境が悪い時の動作確認をしたい!
アプリの開発や動作確認、バグの調査をしている時に、ネットワーク環境が悪くなった時の検証をしたい時があります。
しかし実際のネットワーク環境の方を操作するのは、かなり大変!(自宅なら、ルーターの電源落とすとかでできるかも?笑)
そこでネットワーク自体の設定を変更せずに、そういったシチュエーションでの動作確認をする方法をまとめました!! またついでに他にXcodeから設定・操作できることもいくつかまとめました。
- デバイスの「設定」アプリの「デベロッパ」機能から変更する方法
- Xcodeのメニューから変更する方法(<- 今回のメイン)
- おまけ1: デバイスの発熱状態を操作する方法
- おまけ2: デバイスのスクショをXcodeから撮る方法
- Mac: Big Sur v11.3.1
- Xcode: 12.5
- iPadAir4th: iPadOS v14.5.1
1. デバイスの「設定」アプリの「デベロッパ」機能から変更する方法
これはいわゆるデバイスの開発者機能を使う方法です。 この機能を使うには、Xcodeでなんでもいいので、1度アプリをビルドしたデバイスである必要があります。 (ただしOSを更新すると、再度アプリをビルドしないといけないです)
そうすると、設定アプリに「デベロッパ」というメニューが追加されます
そのメニューをタップし、「Network Link Conditioner」をタップすると、以下のキャプチャのような画面が表示されます。
ここで「Enable」をONにして、任意のモードを選択してください
それぞれどのようなモードなのかは、なんとなく名前でわかるものもありますが、詳細は、右側の丸い詳細ボタンをタップすると、確認できます。
自分は、「100% Loss」 / 「Very Bad Network」あたりをよく使います
これでネットワーク環境が悪い状態を再現することができました!
1つ注意点は、この検証が終わったら、しっかり「Enable」をOFFにしましょう! でないと、普通にデバイスを使っている間も無駄にネットワーク制限がかかった状態になってしまいます(以前これを忘れていて、気付くのに結構時間もってかれました笑)
2. Xcodeのメニューから変更する(<- 今回のメイン)
次が本題のXcode側からネットワーク設定を変更する方法です。
この方法はXcode11以降で実行可能です(今はほとんどの人は11以降を使っているはず。。)
先程の1.の方法やコントロールセンターから、Wi-Fiやキャリアネットワークを切ればいいじゃあないか、と思う方もいるかと思います。
しかし 例えばバックグランドに入った時、バックグラウンドから復帰した時、コントロールセンターを開いた時などに、画面の更新などの処理が実行されるようなアプリだと、上手く検証できない場合があります。
現に弊社のアプリはそのような処理が入っており、上記の方法での検証が難しかったです。 そこで端末側で操作せずに、MacのXcodeから操作する方法の出番です!
まずはデバイスをLightningケーブルやtype-cのケーブルでMacと接続します。
そしてXcodeの上部のメニューから、「Window」→「Devices and Simulators」を順番に選択します。 そうすると以下のような画面が表示されます。
その画面の中の「Condition」の隣、上記のスクショで赤く囲われた箇所を選択すると、1.の方法と同様に、色々なコンディションが出てくるので、検証目的にあったものを選択しましょう。
そして「Start」ボタンを押します。
これでデバイス側を操作せずに、端末のネットワーク状況を操作できます。
この状態では、デバイス側の上部のステータスバーに以下のスクショにあるようなグレーのボタン?エリアが表示されます。
操作を解除するには、①Xcodeのメニュー内の「Stop」をタップする、②上記のグレーのボタンをタップして、「Stop」をタップする、③ケーブルを抜く、をすれば、OKです!
おまけ1: デバイスの発熱状態を操作する方法
ネットワークの接続環境と同じく、デバイスが発熱した状態での動作確認を検証したい場合もあると思います。
そのような場合は、2.と同じ様にXcodeから操作し、シミュレーションすることができます。 2.で選択した「Condition」を「Thermal State」に変更することで、①Fair、②Serious、③Criticalを選択できます。
③の方が、より発熱状態が強い状態を再現することができます。
なおネットワーク環境の操作と発熱状態を両方とも設定することはできないので、検証するときは、片方ずつ行いましょう!
おまけ2: デバイスのスクショをXcodeから撮る方法
実機デバイスのスクショも同様にXcode側から撮影可能です。 同じくDeviceのメニューの「Take Screenshot」をタップするだけです! タップすれば、デスクトップにスクショが保存されます。
弊社のMacはセキュリティ上AirDropが使えないので、以前は実機で撮影したスクショは、Slackなどで送って、Macでダウンロードして、という手順を踏んでいたのですが、この方法を見つけてからは、Macからデバイスのスクショを撮ることができるようになったので、いちいちSlackなどに送る必要もなくなりました!
まとめ
ユーザーがアプリを使っている時は、デバイスの状況が安定している場合もあれば、ネットワーク環境やデバイスの発熱状況がよくない時もあると思います。
特にC向けのアプリでユーザー数が多い場合は、ユーザーのデバイスのコンディションは多岐にわたります。
そのようなバットコンディションでも、アプリがしっかり動くことを確認するためにも、今回調べたデバック機能はとても有用だと思いました。
個人でも仕事でも、アプリの品質をあげるのに、活用していこうと思います!