Ich versuche, ein inkonsistentes Verhalten zu debuggen, das in einer Anwendung auftritt, deren Primärdaten aus dem Internet stammen. Ich sehe die Probleme nicht im Simulator, sondern nur auf dem Gerät. Daher möchte ich die Netzwerk- und Konnektivitätsumgebung im Simulator reproduzieren.
Gibt es eine Möglichkeit, das Netzwerk im Simulator zu deaktivieren?
(Ich verbinde mich remote mit dem Mac, um Code zu erhalten, derzeit keine andere Wahl, daher ist das Deaktivieren des Betriebssystemnetzwerks keine Option.)
ios
iphone
debugging
networking
ios-simulator
Paul Hammond
quelle
quelle
Antworten:
Ich fürchte nicht - der Simulator teilt die Netzwerkverbindung, die das Betriebssystem verwendet. Ich habe vor einiger Zeit einen Radar-Fehlerbericht über die Simulation von Netzwerkbedingungen eingereicht . Sie könnten das Gleiche in Betracht ziehen.
quelle
Verwenden Sie einen einfachen Faradayschen Käfig , um den externen HF-Signalpegel zu blockieren oder zu begrenzen.
Sie können Ihre eigenen mit Aluminiumfolie machen. Die Öffnungen sollten kleiner als die Wellenlänge Ihres Datendienstes sein, wenn Sie dies blockieren möchten.
800 MHz haben eine Wellenlänge von 37 cm (1900 "), 1900 MHz haben eine Wellenlänge von 16 cm (6").
Dies funktioniert mit einem tatsächlichen Gerät besser als mit dem Simulator, da der Mac im Faradayschen Käfig schwer zu bearbeiten ist ;-)
quelle
Ja. In Xcode können Sie zum
Xcode
Menüpunkt ->Open Developer Tools
-> gehenMore Developer Tools
und " Zusätzliche Tools für Xcode " herunterladen , die den Network Link Conditioner enthalten.Mit diesem Tool können Sie verschiedene Netzwerkszenarien simulieren (z. B. 100% Verlust, 3G, DNS mit hoher Latenz usw.) und eigene benutzerdefinierte Szenarien erstellen.
quelle
Die einzige Möglichkeit, das Netzwerk in einem mir bekannten iOS-Simulator zu deaktivieren, ist die Verwendung von Tools wie Little Snitch oder Hands Off . Mit ihnen können Sie alle ausgehenden und eingehenden Netzwerkverbindungen verweigern / blockieren. Sie können es so einrichten, dass nur Verbindungen von der Simulator-App blockiert werden. Funktioniert wie eine Firewall.
quelle
Schalten Sie einfach Ihr WiFi in Mac OSX aus, das ist ein Vergnügen!
quelle
Download Zusätzliches Tools-Paket (Network Link Conditioner)
Beschreibung
Beispiel in Sierra:
quelle
Aktualisieren Sie einfach die Antwort auf das aktuelle Datum. Seit Xcode 4 (?) Wird ein Einstellungsbereich
/Applications/Utilities
aufgerufenNetwork Link Conditioner
. Entweder verwenden Sie eines der vorhandenen Profile oder Sie erstellen ein eigenes benutzerdefiniertes Profil mit 0 Kbit / s Up / Downlink und 100% Drop.quelle
Network Link Conditioner
es sich um ein offizielles Apple-Tool handelt und es im Vergleich zuLittle Snitch
oder völlig kostenlos istHands Off
.Da Xcode diese Funktion nicht bietet, werden Sie sich auf jeden Fall für eine Anwendung / ein Tool eines Drittanbieters entscheiden. Durch Deaktivieren des MAC-Netzwerks können Sie auch das iOS Simulator-Netzwerk deaktivieren.
Sie können Ihr MAC-Internet über "
System Preferences...
"> "Network
" ausschalten und die gewünschte Netzwerkquelle ausschalten.So schalten Sie Ihre MAC-Ethernet-Internetquelle aus:
So schalten Sie Ihre MAC WiFi-Internetquelle aus (wenn sich Ihr MAC im Wifi-Internet befindet):
quelle
Sie können die Internetverbindung mit einer Drittanbieter-App wie z
Charles: http://www.charlesproxy.com/
Drücken Sie auf einem Mac Befehl + Umschalt + T, um die Drosselung einzurichten.
quelle
Eine wahrscheinlich verrückte Idee oder ein Patch:
Schalten Sie einfach die Flagge für die Erreichbarkeit des Netzwerks um
Dieser Code ist , die ich nutzen , um meine Flagge Laufzeit zu umschalten durch Auslösen ‚Simulator Speicher Warning‘ und seine völlig sicher, stellen Sie sicher , Code in sein sollte DEBUG - Modus nur
quelle
false
ist eine großartige Idee. Keine Installation, und ich kann weiterhin remote arbeiten! Vielen Dank.isInternetAvailable
definiert?!Es gibt zwei Möglichkeiten, das Internet von IOS Simulator zu deaktivieren :
Es ist der einfachste Weg
quelle
Sie können Little Snitch verwenden , um den Netzwerkverkehr für jeden einzelnen Prozess zu unterbrechen , einschließlich solcher, die auf dem iOS-Simulator ausgeführt werden. Auf diese Weise können Sie Ihre Internetverbindung beibehalten und Ihre laufende App trennen.
quelle
Mit Xcode 8.3 und iOS 10.3:
Stellen Sie sicher, dass Sie
@available(iOS 10.3, *)
oben in Ihrer Testsuite-Datei einfügen.Sie können alternativ "Flugzeugmodus einschalten", wenn Sie dies bevorzugen.
Sobald Siri WLAN ausschaltet oder den Flugzeugmodus einschaltet, müssen Sie den Siri-Dialog schließen, der besagt, dass Siri Internet benötigt. Dies wird durch Drücken der Home-Taste erreicht, wodurch der Dialog geschlossen und zu Ihrer App zurückgekehrt wird.
quelle
Wenn Ihre App eine Verbindung zu einer bestimmten Domain herstellt, können Sie diese einfach zu Ihrer hinzufügen
/etc/hosts
Datei und an eine nicht vorhandene IP in Ihrem lokalen Netzwerk weiterleiten Der Server ist nicht erreichbar.Fügen Sie die folgende Zeile hinzu:
oder verwenden
127.0.0.1
Sie, wenn Sie keinen Webserver auf Ihrem lokalen Computer ausführen.quelle
Sie können OHHTTPStubs verwenden und die Netzwerkanforderungen an bestimmte URLs stubben, um einen Fehler zu verursachen.
quelle
Eine einfache Lösung besteht darin, einen Flugzeugmodus für Ihren Mac zu erstellen. So geht's:
Wenn Sie das Netzwerk wieder aktivieren möchten, wählen Sie einfach Automatisch aus dem Dropdown-Menü Standort und klicken Sie auf Übernehmen
quelle
Ich würde vorschlagen, dass Sie Charles Proxy verwenden App auf dem Mac verwenden
Es ermöglicht Ihnen die Verwendung
Bandwidth Throttle
Funktion verwenden, die nur zum Anpassen der Netzwerkverbindung erstellt wurdeStern / Stopp-Drosselung ⌘ command+ T
Drosselklappeneinstellungen ... ⌘ command+ T+⇧ shift
quelle
Sie können stattdessen das Netzwerk des Hosts deaktivieren!
quelle
Wenn Sie mindestens 2 WLAN-Netzwerke zum Verbinden haben, können Sie ganz einfach einen Fehler im iOS-Simulator verwenden:
Der Fehler ist, dass der Simulator versucht, ein Netzwerk (IP?) Zu verwenden, das noch nicht verbunden ist.
Bis Sie den Simulator neu gestartet haben, gibt es kein Internet (auch wenn das erste WLAN-Netzwerk, mit dem Sie verbunden waren, über eine Internetverbindung verfügt). Sie können also Projekte ausführen (cmd-R) und stoppen (cmd-.), Um den Simulator ohne Verbindung zu verwenden. Ihr Mac wird jedoch verbunden.
Wenn Sie dann den verbundenen Simulator ausführen müssen, beenden Sie ihn einfach und starten Sie ihn.
quelle
Sie können den Netzwerkverbindungs-Conditioner auf Ihrem Mac verwenden. Sie können es von der Apple-Entwickler-Website herunterladen. Es sollte verfügbar sein, wo wir die älteren Versionen von Xcode und iOS bekommen. Mit diesem Netzwerk-Conditioner können Sie die Stärke des Netzwerks von WLAN auf kein Netzwerk ändern.
Auch wenn Sie den Netzwerkkonditionierer installieren, wird er in den Systemeinstellungen installiert.
quelle