iPhoneシミュレーターで飛行機モードをシミュレートする


回答:


113

Macのネットワーク接続をオフにします。


14
明らかに私は自分を蹴った。しかし、同時に、確かに彼らはより良い解決策を作ることができたでしょう!
ベンラムリー2009

37
私たちのチームはAppleに同様の機能を求めてきましたが、思ったより難しいです。問題は、シミュレーターで実行されているアプリが実際にはMacアプリであることです。iPhone SimulatorはiPhoneをエミュレートしません。これは、MacアプリがリンクしてiPhoneのように見える環境に過ぎません。したがって、システムレイヤーで、アプリがネットワークと通信するのを制限する方法が必要です。Unixはそれを提供していません。それを取得するには、ほぼ確実にカーネルのサポートが必要です。NSURLConnectionとその類縁に対してはより簡単に実行できますが、一部の呼び出しが機能し、一部の機能が機能しない場合は、さらに混乱する可能性があります。
Rob Napier、

13
これは飛行機モードをシミュレートしません... GPSシミュレータは引き続き機能しますが、値を返しません。
Jann

18
一部の状況では、ネットワーク接続をオフにするだけではそれほど役に立ちません。たとえば、到達可能性とインターネットの可用性をテストしているときは、飛行機モードが本当に必要な場合があります。ネットワーキング接続が機能していないシミュレーターは、実際には同じではありません。また、一部の職場には、実際の認証の問題があるコンピューターがあり、ネットワーク接続を強制終了することは必ずしも選択肢ではありません(すべてがうまくいかないため)。
オクルス

9
オクルスに同意します。オフィスで作業する場合、マシン全体のネットワークをオフにすると、作業環境での通信に深刻な悪影響を及ぼします。これが受け入れられる解決策ではない多くの状況があります。
Krejko 2013

59

AppleのNetwork Link Conditionerをインストールできます

ヨセミテで:

ネットワークリンクコンディショナーは、「Xcode用ハードウェアIOツール」パッケージに含まれています。これはApple Developer Downloadsページからダウンロードできます。ダウンロードが完了したら、DMGを開き、「Network Link Condition.prefPane」をダブルクリックしてインストールします(ソース)。

この設定パネルを使用すると、速度が0kbpsのプロファイルを作成できます。

ネットワークリンクコンディショナー

古いバージョンのOSXの場合:

マウンテンライオン/マーベリックス:Xcode > Open Developer Tool > More Developer Tools
ライオン:/Developer/Applications/Utilities/Network Link Conditioner


11
ネットワークリンクコンディショナーを使用しても、到達可能性に変化はありません。実際、0 kbpsに設定し、パケット損失を100%にしても、すべてがアップで、wifi経由で到達可能であると報告されます。これは、機内モードをテストする場合には機能しません。
E.フレイタス

1
左側の大きなスイッチを「オン」に切り替えましたか?
Tieme

ここで同じ問題、リンクコンディショナーを0 kbpsのアップ/ダウンおよび100%のパケット損失のアップ/ダウンは助けにはなりません。iOSシミュレータはしばらくするとタイムアウトします。帯域幅MAXとして0kbpsが想定されています。
Adrianによるデザイン


-1

より簡単なハック:接続をチェックする関数を作成する

import NetInfo from '@react-native-community/netinfo';

export const ckeckIsConnected = async () => {
  const isConnected = NetInfo.fetch().then((state) => {
    return state.isConnected;
  });
  return isConnected;
};

接続がある場合にのみ、データをフェッチします。接続をシミュレートするにはfalse 、実際の接続が何であれ、この関数に戻るだけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.