Próbuję debugować niespójne zachowanie, które widzę w aplikacji, która pobiera swoje podstawowe dane z Internetu. Nie widzę problemów w symulatorze, tylko na urządzeniu, dlatego chciałbym odtworzyć środowisko sieci i łączności w symulatorze.
Czy jest jakiś sposób na wyłączenie sieci w symulatorze?
(Łączę się zdalnie z komputerem Mac, aby kodować, nie ma teraz innego wyboru, więc wyłączenie sieci systemu operacyjnego nie jest opcją).
ios
iphone
debugging
networking
ios-simulator
Paul Hammond
źródło
źródło
Odpowiedzi:
Obawiam się, że nie - symulator udostępnia to samo połączenie sieciowe, z którego korzysta system operacyjny. Jakiś czas temu złożyłem raport o błędzie radaru dotyczący symulacji warunków sieciowych; możesz rozważyć zrobienie tego samego.
źródło
Użyj prostej klatki Faradaya, aby zablokować lub ograniczyć poziom zewnętrznego sygnału RF.
Możesz zrobić swój własny z folii aluminiowej. Otwory powinny być mniejsze niż długość fali usługi danych, jeśli chcesz to zablokować.
800 Mhz ma długość fali 37 cm (14 "), 1900 Mhz ma długość fali 16 cm (6").
Działa to lepiej na rzeczywistym urządzeniu niż na symulatorze, ponieważ na komputerze Mac ciężko jest pracować w klatce Faradaya ;-)
źródło
Tak. W Xcode możesz przejść do
Xcode
pozycji menu ->Open Developer Tools
->More Developer Tools
i pobrać „ Dodatkowe narzędzia dla Xcode ”, które będą zawierały Network Link Conditioner.Za pomocą tego narzędzia można symulować różne scenariusze sieciowe (takie jak utrata 100%, 3G, DNS z dużym opóźnieniem i inne), a także można tworzyć własne niestandardowe.
źródło
Jedyny znany mi sposób na wyłączenie sieci na symulatorze iOS to użycie narzędzi takich jak Little Snitch lub Hands Off . Za ich pomocą możesz odmówić / zablokować wszelkie wychodzące i przychodzące połączenia sieciowe. Możesz go skonfigurować tak, aby blokował tylko połączenia z aplikacji symulatora. Działa jak zapora ogniowa.
źródło
Wystarczy wyłączyć Wi-Fi w Mac OSX, to działa na ucztę!
źródło
Pobierz pakiet dodatkowych narzędzi (Network Link Conditioner)
Opis
Przykład w Sierra:
źródło
Po prostu aktualizuję odpowiedź na bieżącą datę. Ponieważ Xcode 4 (?) Jest
/Applications/Utilities
wywoływany panel preferencjiNetwork Link Conditioner
. Albo używasz jednego z istniejących profili, albo tworzysz swój własny profil z 0 Kbps w górę / w dół i 100% spadku.źródło
Network Link Conditioner
jest to oficjalne narzędzie Apple i jest całkowicie bezpłatne, w porównaniu doLittle Snitch
lubHands Off
.Ponieważ Xcode nie zapewnia takiej funkcji, na pewno wybierzesz aplikację / narzędzie innej firmy. Wyłączenie sieci MAC pomoże również wyłączyć sieć symulatora iOS.
Możesz wyłączyć swój Internet MAC z „
System Preferences...
”> „Network
” i wyłączyć pożądane źródło sieci.Aby wyłączyć źródło internetowe MAC Ethernet:
Aby wyłączyć źródło MAC WiFi WiFi (jeśli Twój MAC jest włączony Internet Wi-Fi):
źródło
Możesz dławić połączenie internetowe za pomocą aplikacji innej firmy, takiej jak
Charles: http://www.charlesproxy.com/
Naciśnij Command + Shift + T na komputerze Mac, aby skonfigurować dławienie.
źródło
Jeden prawdopodobnie szalony pomysł lub łatka:
Wystarczy przełączyć flagę zasięgu sieci
Jest to kod, który używam, aby włączyć flagę czasu pracy przez wyzwalanie „Ostrzeżenie Symulator pamięci” oraz jej całkowicie bezpieczne, wystarczy upewnić się, kod powinien być w trybie debugowania tylko
źródło
false
to świetny pomysł. Brak instalacji i mogę kontynuować pracę zdalnie! Dziękuję Ci.isInternetAvailable
zdefiniowane ?!Możesz użyć Little Snitch, aby odciąć ruch sieciowy do dowolnego indywidualnego procesu, w tym również tego, który działa na symulatorze iOS. W ten sposób możesz zachować połączenie internetowe i odłączyć działającą aplikację.
źródło
Z Xcode 8.3 i iOS 10.3:
Pamiętaj, aby dołączyć
@available(iOS 10.3, *)
na górze pliku zestawu testów.Możesz również „Włącz tryb samolotowy”, jeśli wolisz.
Gdy Siri wyłączy Wi-Fi lub w trybie samolotowym, musisz zamknąć dialog Siri, który mówi, że Siri wymaga Internetu. Odbywa się to poprzez naciśnięcie przycisku Home, co powoduje zamknięcie dialogu i powrót do aplikacji.
źródło
Istnieją dwa sposoby, aby wyłączyć Internet IOS Simulator:
To najprostszy sposób
źródło
Jeśli aplikacja łączy się z określoną domeną, możesz po prostu dodać ją do
/etc/hosts
pliku i skierować do nieistniejącego adresu IP w sieci lokalnej ... W przypadku aplikacji będzie ona taka sama, jakby nie było połączenia z Internetem lub serwer jest nieosiągalny.dodaj następujący wiersz:
lub użyj,
127.0.0.1
jeśli nie masz serwera WWW na komputerze lokalnym.źródło
Możesz użyć OHHTTPStubs i zamieścić żądania sieciowe do określonych adresów URL, aby zawieść.
źródło
Prostym rozwiązaniem jest utworzenie trybu samolotowego na komputerze Mac. Oto jak to zrobić:
Jeśli chcesz ponownie włączyć sieć, wybierz Automatycznie z menu rozwijanego Lokalizacja i kliknij Zastosuj
źródło
Sugeruję skorzystanie z Charlesa Proxy aplikacji na Macu
Pozwala na używanie
Bandwidth Throttle
funkcji, która została stworzona wyłącznie w celu dostosowania połączenia sieciowegoGwiazdka / Stop Ograniczanie ⌘ command+ T
Ustawienia przepustnicy ... ⌘ command+ T+⇧ shift
źródło
zamiast tego możesz wyłączyć sieć hosta!
źródło
Jeśli masz co najmniej 2 sieci Wi-Fi do połączenia, to bardzo prosty sposób to skorzystanie z błędu w symulatorze iOS:
Błąd polega na tym, że symulator próbuje użyć sieci (IP?), Która nie jest jeszcze podłączona.
Dopóki nie uruchomisz ponownie symulatora - nie będzie on miał dostępu do Internetu (nawet jeśli ta pierwsza sieć Wi-Fi, którą podłączyłeś, miał połączenie internetowe), więc możesz uruchomić (cmd-R) i zatrzymać (cmd-) projekt (y), aby korzystać z symulatora bez połączenia, ale komputer Mac zostanie podłączony.
Następnie, jeśli będziesz musiał uruchomić symulator podłączony - po prostu wyjdź i uruchom go.
źródło
Możesz użyć kondycjonera łącza sieciowego na komputerze Mac. Możesz pobrać go ze strony dewelopera Apple. Powinien być dostępny tam, gdzie otrzymujemy starsze wersje Xcode i iOS. Dzięki temu kondycjonerowi sieciowemu możesz zmienić siłę sieci z Wi-Fi na brak sieci.
Również po zainstalowaniu kondycjonera sieciowego zostanie on zainstalowany w preferencjach systemu.
źródło