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 stelle eine Remoteverbindung zum Mac her, um Code zu verwenden. Momentan gibt es keine andere Möglichkeit. Daher ist das Deaktivieren des Betriebssystemnetzwerks keine Option.).
Ich fürchte nicht - der Simulator teilt die Netzwerkverbindung, die das Betriebssystem verwendet. Ich habe vor einiger Zeit einen Radar Bug Report zur Simulation von Netzwerkbedingungen eingereicht. Sie könnten das gleiche tun.
Verwenden Sie einen einfachen Faradayschen Käfig , um den externen RF Signalpegel zu blockieren oder zu begrenzen.
Sie können Ihre Selbst mit Aluminiumfolie bilden. Die Öffnungen sollten kleiner sein als die Wellenlänge Ihres Datendienstes, wenn Sie dies blockieren möchten.
800 Mhz haben eine Wellenlänge von 37 cm (14 "), 1900 Mhz haben eine Wellenlänge von 16 cm (6").
Dies funktioniert besser mit einem tatsächlichen Gerät als mit dem Simulator, da der Mac im Faraday-Käfig schwer zu bearbeiten ist ;-)
Ja. In Xcode können Sie zum Menüpunkt Xcode
-> Open Developer Tools
-> More Developer Tools
Gehen und " Additional Tools for Xcode " herunterladen, das haben wird der Network Link Conditioner.
Mit diesem Tool können Sie verschiedene Netzwerkszenarien simulieren (z. B. 100% Verlust, 3G, DNS mit hoher Latenz und mehr) und Ihre eigenen benutzerdefinierten Szenarien erstellen.
Die einzige Möglichkeit, das Netzwerk im iOS-Simulator zu deaktivieren, ist die Verwendung von Tools wie Little Snitch oder Hands Off . Mit ihnen können Sie ausgehende und eingehende Netzwerkverbindungen ablehnen/blockieren. Sie können es so einrichten, dass es nur Verbindungen von der Simulator-App blockiert. Funktioniert wie eine Firewall.
Schalten Sie einfach Ihr WiFi in Mac OS X aus, das ist ein Vergnügen!
Aktualisieren Sie einfach die Antwort auf das aktuelle Datum. Seit Xcode 4 (?) Gibt es ein Einstellungsfenster in /Applications/Utilities
namens Network Link Conditioner
. Entweder Sie verwenden eines der vorhandenen Profile oder Sie erstellen ein eigenes benutzerdefiniertes Profil mit 0 Kbps Up/Downlink und 100% gelöscht.
Da Xcode diese Funktion nicht bietet, werden Sie sich definitiv für Anwendungen/Tools von Drittanbietern entscheiden. Das Deaktivieren des MAC-Netzwerks hilft auch beim Deaktivieren des iOS-Simulator-Netzwerks.
Sie können Ihr MAC-Internet über "System Preferences...
">" Network
"und schalten Sie die gewünschte Netzwerkquelle aus.
So schalten Sie Ihre MAC-Ethernet-Internetquelle aus:
So schalten Sie Ihre MAC WiFi-Internetquelle aus (wenn sich Ihre MAC im Wifi-Internet befindet):
Eine wahrscheinlich verrückte Idee oder ein Patch:
Schalten Sie einfach das Flag der Netzwerk-Erreichbarkeit um
Dies ist Code, mit dem ich die Laufzeit meines Flags umschalte, indem ich 'Simulator Memory Warning' auslöse und VOLLSTÄNDIG SICHER mache. Stelle nur sicher, dass der Code in DEBUG Mode ist
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
isInternetAvailable = !isInternetAvailable;
#endif
}
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.
Sie können Little Snitch verwenden, um den Netzwerkverkehr für jeden einzelnen Prozess zu unterbrechen, auch für Prozesse, die auf dem iOS-Simulator ausgeführt werden. Auf diese Weise können Sie Ihre Internetverbindung aufrechterhalten und Ihre laufende App trennen.
Mit Xcode 8.3 und iOS 10.3:
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)
Stellen Sie sicher, dass @available(iOS 10.3, *)
am Anfang Ihrer Testsuite-Datei steht.
Sie können alternativ "Flugzeugmodus einschalten", wenn Sie dies vorziehen.
Sobald Siri das WLAN deaktiviert oder den Flugzeugmodus aktiviert hat, müssen Sie den Siri Dialog schließen, der besagt, dass Siri Dies wird durch Drücken der Home-Taste erreicht, wodurch der Dialog geschlossen wird und Sie zu Ihrer App zurückkehren.
Wenn Ihre App eine Verbindung zu einer bestimmten Domain herstellt, können Sie diese einfach zu Ihrer /etc/hosts
- Datei hinzufügen und an eine nicht vorhandene IP in Ihrem lokalen Netzwerk weiterleiten Es gab keine Internetverbindung oder der Server ist nicht erreichbar.
Sudo nano /etc/hosts
füge die folgende Zeile hinzu:
192.168.1.123 example.com
oder verwenden Sie 127.0.0.1
, wenn Sie keinen Webserver auf Ihrem lokalen Computer betreiben.
Sie können OHHTTPStubs verwenden und die Netzwerkanforderungen an bestimmte URLs stummschalten, um einen Fehler zu verursachen.
Es gibt zwei Wege zum deaktivieren IOS Simulator Internet:
Das ist der einfachste Weg
sie können stattdessen das Netzwerk des Hosts deaktivieren!
Sie können den Network Link Conditioner auf Ihrem Mac verwenden. Sie können es von der Apple Entwickler-Website) herunterladen. Es sollte dort verfügbar sein, wo wir die älteren Versionen von Xcode und iOS haben Netzwerk.
Auch wenn Sie den Network Conditioner installieren, wird er in den Systemeinstellungen installiert.
Wenn Sie haben mindestens 2 WiFi-Netzwerke zu verbinden, ist eine sehr einfache Möglichkeit, einen Fehler im iOS-Simulator zu 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, hat er kein Internet (selbst wenn das erste WLAN-Netzwerk, mit dem Sie verbunden waren, eine Internetverbindung hatte). Sie können also ein (cmd-R) Projekt ausführen und ein (cmd-) Projekt stoppen, um den Simulator ohne Verbindung zu verwenden. aber dein Mac wird verbunden.
Wenn Sie dann den angeschlossenen Simulator ausführen müssen, beenden Sie ihn und starten Sie ihn.
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 im Dropdown-Menü Standort die Option Automatisch aus und klicken Sie auf Übernehmen