私はインターネットからその主要なデータを取得するアプリケーションで見ている私が見ているいくつかの矛盾したふるまいをデバッグしようとしています。シミュレータの問題はデバイス上だけでは見られないので、ネットワークと接続環境をシミュレータで再現したいと思います。
シミュレータでネットワークを無効にする方法はありますか?
(私はリモートでMacに接続してコード化しているが、今のところ他に選択肢はないので、OSネットワークを無効にすることは選択肢ではない)。
シミュレータは、OSが使用しているネットワーク接続をすべて共有します。私はしばらく前にネットワーク状態のシミュレーションについて レーダーバグレポート を提出しました。あなたは同じことを検討するかもしれません。
はい。 Xcodeでは、Xcode
メニュー項目 - > Open Developer Tools
- > More Developer Tools
に進み、 " Xcode用追加ツール "をダウンロードすると、ネットワークリンクコンディショナーが表示されます。 。
このツールを使用して、さまざまなネットワークシナリオ(100%損失、3G、高遅延DNSなど)をシミュレートしたり、独自のカスタムシナリオを作成したりすることができます。
私が知っているiOSシミュレータでネットワークを無効にする唯一の方法は、 Little Snitch または Hands Off のようなツールを使用することです。それらを使用すると、送受信ネットワーク接続を拒否/ブロックできます。シミュレータアプリからの接続だけをブロックするように設定できます。ファイアウォールのように機能します。
Mac OSXであなたのWiFiをオフにするだけでこれは御馳走を働きます!
現在の日付に答えを更新するだけです。 Xcode 4(?)以降、/Applications/Utilities
にはNetwork Link Conditioner
という設定パネルがあります。既存のプロファイルのいずれかを使用するか、0 Kbpsアップ/ダウンリンクで100%ドロップした独自のカスタムプロファイルを作成してください。
おそらく狂った考えかパッチ:
ネットワーク到達可能性のフラグを単に切り替える
これは、'Simulator Memory Warning'とその完全に安全な状態をトリガーすることによって、自分のフラグのランタイムを切り替えるために使用するコードです。コードはDEBUG Modeのみにする
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
isInternetAvailable = !isInternetAvailable;
#endif
}
あなたはそのようなサードパーティのアプリでインターネット接続を絞ることができます
チャールズ: http://www.charlesproxy.com/
スロットルを設定するには、Macでcommand + shift + Tを押します。
IOSシミュレータで実行されているものも含めて、 Little Snitch を使用して、個々のプロセスへのネットワークトラフィックを遮断できます。そうすれば、インターネットに接続したまま、実行中のアプリを切断できます。
Xcode 8.3とiOS 10.3の場合:
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)
必ずテストスイートファイルの先頭に@available(iOS 10.3, *)
を含めてください。
ご希望であれば、代わりに「機内モードをオンにする」こともできます。
Siriが無線LANをオフにするか機内モードをオンにすると、Siriはインターネットを必要とするというSiriダイアログを閉じる必要があります。これは、ホームボタンを押すことで実現されます。ホームボタンを押すと、ダイアログが閉じられてアプリに戻ります。
あなたは OHHTTPStubs を使い、失敗するために特定のURLへのネットワークリクエストをスタブすることができます。
アプリが特定のドメインに接続している場合は、それを/etc/hosts
ファイルに追加して、ローカルネットワーク内の存在しないIPにルーティングすることができます。アプリケーションの場合、インターネット接続がなかった場合と同じになります。またはサーバーに到達できません。
Sudo nano /etc/hosts
次の行を追加してください。
192.168.1.123 example.com
あなたがあなたのローカルマシン上でウェブサーバを走らせていないなら、あるいは127.0.0.1
を使用してください。
2つの無効にする方法がありますIOSシミュレータインターネット:
それは最も簡単な方法です
代わりにホストのネットワークを無効にすることもできます。
あなたのMac上でネットワークリンクコンディショナーを使うことができます。あなたはそれをアップルの開発者ウェブサイトからダウンロードすることができます。それは私たちがXcodeとiOSのより古いバージョンを手に入れるところで利用可能であるべきです。このネットワークコンディショナーを使えば、ネットワークの強度を無線LANからネットワークなしに変更できます。
また、ネットワークコンディショナをインストールすると、システム環境設定にインストールされます。
接続するWi-Fiネットワークが2つ以上ある場合、非常に簡単な方法はiOSシミュレータのバグを使用することです。
バグは、シミュレータがまだ接続されていないネットワーク(IP?)を使用しようとしていることです。
あなたがシミュレータを再起動するまで、それはインターネットを持たないでしょう(あなたが接続したその最初のwifiネットワークがインターネット接続を持っていたとしても)。あなたのMacは接続されます。
その後、接続したシミュレータを実行する必要がある場合は、終了して起動します。
簡単な解決策は、Mac用の機内モードを作成することです。これを行う方法は次のとおりです。
ネットワークを再び有効にするには、[場所]ドロップダウンメニューから[自動]を選択し、[適用]をクリックします。