web-dev-qa-db-ja.com

iOSシミュレータでネットワークを無効にすることは可能ですか?

私はインターネットからその主要なデータを取得するアプリケーションで見ている私が見ているいくつかの矛盾したふるまいをデバッグしようとしています。シミュレータの問題はデバイス上だけでは見られないので、ネットワークと接続環境をシミュレータで再現したいと思います。

シミュレータでネットワークを無効にする方法はありますか?

(私はリモートでMacに接続してコード化しているが、今のところ他に選択肢はないので、OSネットワークを無効にすることは選択肢ではない)。

379
Paul Hammond

シミュレータは、OSが使用しているネットワーク接続をすべて共有します。私はしばらく前にネットワーク状態のシミュレーションについて レーダーバグレポート を提出しました。あなたは同じことを検討するかもしれません。

241

単純な ファラデー箱 を使って外部RF信号レベルをブロックまたは制限します。

あなたはアルミホイルであなた自身のものを作ることができます。それがあなたがブロックしたいものであれば、開口部はあなたのデータサービスの 波長 より小さくあるべきです。

800MHzは37cm(14”)の波長を有し、1900MHzは16cm(6”)の波長を有する。

ファラデー箱の中ではMacはうまく動かないので、これはシミュレータよりも実際のデバイスでうまく機能します;-)

enter image description here

1556
progrmr

はい。 Xcodeでは、Xcodeメニュー項目 - > Open Developer Tools - > More Developer Toolsに進み、 " Xcode用追加ツール "をダウンロードすると、ネットワークリンクコンディショナーが表示されます。 。

このツールを使用して、さまざまなネットワークシナリオ(100%損失、3G、高遅延DNSなど)をシミュレートしたり、独自のカスタムシナリオを作成したりすることができます。

259
swathy valluri

私が知っているiOSシミュレータでネットワークを無効にする唯一の方法は、 Little Snitch または Hands Off のようなツールを使用することです。それらを使用すると、送受信ネットワーク接続を拒否/ブロックできます。シミュレータアプリからの接続だけをブロックするように設定できます。ファイアウォールのように機能します。

46
Felix

Mac OSXであなたのWiFiをオフにするだけでこれは御馳走を働きます!

15
benpalmer

ダウンロード 追加ツールパッケージ (Network Link Conditioner)

説明

Sierraでの例: enter image description here

enter image description here

13
Nik Kov

現在の日付に答えを更新するだけです。 Xcode 4(?)以降、/Applications/UtilitiesにはNetwork Link Conditionerという設定パネルがあります。既存のプロファイルのいずれかを使用するか、0 Kbpsアップ/ダウンリンクで100%ドロップした独自のカスタムプロファイルを作成してください。

11
user207616

Xcodeはそのような機能を提供していないので、あなたは間違いなくいくつかのサードパーティ製のアプリケーション/ツールのために行くでしょう。 MACネットワークをオフにすると、iOSシミュレータネットワークもオフになります。

あなたは "System Preferences..."> "Network"からあなたのMACインターネットをオフにして欲しいネットワークソースをオフにすることができます。

MAC Ethernetインターネットソースを無効にするには、EtherNet Network Source

あなたのMAC WiFiインターネットソースをオフにするには(あなたのMACがWifiインターネット上にあるなら):enter image description here

9
Ali

おそらく狂った考えかパッチ:

ネットワーク到達可能性のフラグを単に切り替える

これは、'Simulator Memory Warning'とその完全に安全な状態をトリガーすることによって、自分のフラグのランタイムを切り替えるために使用するコードです。コードはDEBUG Modeのみにする

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif 
}
6
Darshit Shah

あなたはそのようなサードパーティのアプリでインターネット接続を絞ることができます

チャールズ: http://www.charlesproxy.com/

スロットルを設定するには、Macでcommand + shift + Tを押します。

6
mabounassif

IOSシミュレータで実行されているものも含めて、 Little Snitch を使用して、個々のプロセスへのネットワークトラフィックを遮断できます。そうすれば、インターネットに接続したまま、実行中のアプリを切断できます。

3
Eran Goldin

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ダイアログを閉じる必要があります。これは、ホームボタンを押すことで実現されます。ホームボタンを押すと、ダイアログが閉じられてアプリに戻ります。

3
brandenbyers

あなたは OHHTTPStubs を使い、失敗するために特定のURLへのネットワークリクエストをスタブすることができます。

2
mwhuss

アプリが特定のドメインに接続している場合は、それを/etc/hostsファイルに追加して、ローカルネットワーク内の存在しないIPにルーティングすることができます。アプリケーションの場合、インターネット接続がなかった場合と同じになります。またはサーバーに到達できません。

Sudo nano /etc/hosts

次の行を追加してください。

192.168.1.123   example.com

あなたがあなたのローカルマシン上でウェブサーバを走らせていないなら、あるいは127.0.0.1を使用してください。

1
Dion

2つの無効にする方法がありますIOSシミュレータインターネット:

  • ネットワーク接続を外します
  • Wi-Fiをオフにする

それは最も簡単な方法です

1
Daniel Beltrami

代わりにホストのネットワークを無効にすることもできます。

1
wshcdr

あなたのMac上でネットワークリンクコンディショナーを使うことができます。あなたはそれをアップルの開発者ウェブサイトからダウンロードすることができます。それは私たちがXcodeとiOSのより古いバージョンを手に入れるところで利用可能であるべきです。このネットワークコンディショナーを使えば、ネットワークの強度を無線LANからネットワークなしに変更できます。

また、ネットワークコンディショナをインストールすると、システム環境設定にインストールされます。

0
Astha Trivedi

接続するWi-Fiネットワークが2つ以上ある場合、非常に簡単な方法はiOSシミュレータのバグを使用することです。

  1. 開いている場合はシミュレータ(cmd-q)から終了します
  2. あなたのMacを1つのwifiに接続してください(インターネットに接続されていなくても構いません)。
  3. シミュレータを起動し(メニュー:xCode-> Open Developer Tool-> iOs Simulator)、ロードされている間待つ
  4. 他のものに無線LANネットワークを切り替える
  5. 利益

バグは、シミュレータがまだ接続されていないネットワーク(IP?)を使用しようとしていることです。

あなたがシミュレータを再起動するまで、それはインターネットを持たないでしょう(あなたが接続したその最初のwifiネットワークがインターネット接続を持っていたとしても)。あなたのMacは接続されます。

その後、接続したシミュレータを実行する必要がある場合は、終了して起動します。

0
iGore

簡単な解決策は、Mac用の機内モードを作成することです。これを行う方法は次のとおりです。

  • システム環境設定のネットワークに移動します
  • [場所]ドロップダウンメニューをクリックします
  • プラスアイコンをクリックして新しい場所を追加します
  • 新しい場所に「飛行機モード」などの名前を付け、「完了」をクリックします
  • [場所]ドロップダウンメニューから作成した場所を選択します
  • ウィンドウの左側にあるリストで使用可能な各ネットワークインターフェースを順にクリックして、それぞれを無効にします
  • [Configure iPv4]メニューをクリックし、[Off]を選択します
  • wi-Fiの場合は、[Wi-Fiをオフにする]ボタンをクリックするだけです。
  • [適用]をクリックすると、この場所ですべてのネットワークアクティビティがブロックされます

ネットワークを再び有効にするには、[場所]ドロップダウンメニューから[自動]を選択し、[適用]をクリックします。

0
ut9081