Symuluj tryb samolotowy w iPhone Simulator

127

Czy istnieje sposób na symulację trybu samolotowego w symulatorze iPhone'a?

Jason Jenkins
źródło

Odpowiedzi:

114

Wyłącz połączenie sieciowe na komputerze Mac.

Rob Napier
źródło
14
tak oczywiste, że się skopałem. ale jednocześnie z pewnością mogli znaleźć lepsze rozwiązanie!
benlumley
37
To trudniejsze niż się wydaje, chociaż nasz zespół poprosił Apple o podobną funkcjonalność. Problem w tym, że aplikacje działające w symulatorze to tak naprawdę aplikacje na Maca. IPhone Simulator nie emuluje iPhone'a; to tylko środowisko, z którym aplikacje na Maca mogą się łączyć i wyglądać jak iPhone. Potrzebujesz więc sposobu na poziomie systemu, aby ograniczyć komunikację aplikacji z siecią. Unix tego nie zapewnia; prawie na pewno potrzebowałby wsparcia jądra, aby to uzyskać. Możesz to zrobić łatwiej dla NSURLConnection i jego krewnych, ale może to być bardziej zagmatwane, jeśli niektóre połączenia działają, a inne nie.
Rob Napier
13
To nie symuluje trybu samolotowego ... ponieważ symulator GPS nadal działa, ale nie zwraca wartości.
Jann,
18
Samo wyłączenie połączenia sieciowego w niektórych okolicznościach nie jest tak przydatne. Na przykład, gdy testujesz osiągalność i dostępność Internetu - czasami naprawdę potrzebujesz trybu samolotowego. Symulator, który nie ma działającego połączenia sieciowego, nie jest taki sam. Ponadto w niektórych miejscach pracy są komputery, na których występują rzeczywiste problemy z uwierzytelnianiem, co oznacza, że ​​zabijanie połączenia sieciowego nie zawsze jest opcją (ponieważ wszystko się psuje).
occulus
9
Zgadzam się z occuulusem. Podczas pracy w biurze wyłączenie sieci dla całej maszyny poważnie szkodzi komunikacji w środowisku pracy. Jest wiele sytuacji, w których nie jest to akceptowalne rozwiązanie.
Krejko,
59

Możesz zainstalować Network Link Conditioner firmy Apple

W Yosemite:

Network Link Conditioner można znaleźć w pakiecie „Hardware IO Tools for Xcode”. Można go pobrać ze strony pobierania Apple Developer . Po zakończeniu pobierania otwórz DMG i kliknij dwukrotnie „Network Link Condition.prefPane”, aby zainstalować ( źródło ).

Za pomocą tego panelu preferencji możesz utworzyć profil z prędkością 0kbps.

Network Link Conditioner

W starszych wersjach OSX:

Mountain Lion / Mavericks: Xcode > Open Developer Tool > More Developer Tools
Lion:/Developer/Applications/Utilities/Network Link Conditioner

Zwiąż mnie
źródło
11
Osiągalność nie widzi żadnej zmiany podczas korzystania z Network Link Conditioner. W rzeczywistości, kiedy ustawię ją na 0 kb / si 100% utratę pakietów, nadal zgłasza wszystko jako sprawne i osiągalne przez Wi-Fi. Nie działa to w przypadku próby przetestowania trybu samolotowego.
E. Freitas
1
czy na pewno przełączyłeś duży przełącznik po lewej stronie na „ON”?
Tieme
Ten sam problem tutaj, Link Conditioner do 0kbps w górę / w dół i 100% utraty pakietów w górę / w dół nie pomaga. Symulator iOS po chwili wyłącza się. Jako MAKS. Przepustowość przyjmuje się 0 kb / s.
Projekt Adriana
17

Możesz też użyć Małego znicza do tymczasowego temp. zablokować połączenie internetowe dla tej aplikacji.

Roded Konforty
źródło
więc oznacza to, że możesz edytować pliki hostów, aby osiągnąć to samo, dzięki za pomysł.
panchicore,
-1

Łatwiejszy hack: utwórz funkcję sprawdzającą połączenie

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

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

Wykonuj pobieranie danych tylko wtedy, gdy jest połączenie. Aby zasymulować brak połączenia, po prostu wróć false do tej funkcji, niezależnie od tego, jakie jest rzeczywiste połączenie.

arnaudambro
źródło