Est-il possible de désactiver le réseau dans iOS Simulator?
J'essaie de déboguer un comportement incohérent que je vois dans une application qui obtient ses données primaires d'internet. Je ne vois pas les problèmes dans le simulateur, juste sur l'appareil, donc j'aimerais reproduire l'environnement réseau et de connectivité dans le simulateur.
Est-il un moyen de désactiver le réseau dans le simulateur?
(Je me connecte au Mac à distance pour coder, pas d'autre choix en ce moment, donc désactiver le réseau du système D'exploitation n'est pas une option).
17 réponses
Je crains que non - le simulateur partage n'importe quelle connexion réseau que le système d'exploitation utilise. J'ai déposé un rapport de bogueRadar sur la simulation des conditions du réseau il y a quelque temps; vous pourriez envisager de faire la même chose.
Utilisez une simple cage Faraday pour bloquer ou limiter le niveau du signal RF externe.
Vous pouvez faire votre propre avec du papier d'aluminium. Les ouvertures doivent être plus petites que la longueur d'onde de votre service de données si c'est ce que vous voulez bloquer.
800 Mhz a une longueur d'onde de 37 cm (14") , 1900 Mhz a une longueur d'onde de 16 cm (6").
Cela fonctionne mieux avec un périphérique réel qu'avec le simulateur car le Mac est difficile à travailler à l'intérieur de la cage Faraday ;-)
Oui. Dans Xcode, vous pouvez aller à Xcode
élément de menu-> Open Developer Tools
-> More Developer Tools
et téléchargez "outils supplémentaires pour Xcode ", qui aura le conditionneur de liaison réseau.
À l'aide de cet outil, vous pouvez simuler différents scénarios de réseau (tels que 100% de perte, 3G, DNS à latence élevée, etc.) et vous pouvez également créer vos propres scénarios personnalisés.
La seule façon de désactiver le réseau sur iOS simulator que je connais est d'utiliser des outils comme Little Snitch ou Hands Off. Avec eux, vous pouvez refuser / bloquer toutes les connexions réseau sortantes et entrantes. Vous pouvez le configurer de sorte qu'il ne bloque que les connexions de l'application simulateur. Fonctionne comme un pare-feu.
Il suffit d'éteindre votre WiFi dans Mac OSX cela fonctionne un régal!
Juste mettre à jour la réponse à la date actuelle. Depuis Xcode 4 (?) il y a un volet Préférences dans /Applications/Utilities
appelé Network Link Conditioner
. Soit vous utilisez l'un des profils existants ou vous créez votre propre profil personnalisé avec 0 Kbps Up / Downlink et 100% abandonné.
Télécharger package D'outils supplémentaires (conditionneur de liens réseau)
Puisque Xcode ne fournit pas une telle fonctionnalité, vous allez certainement opter pour une application/ un outil tiers. Désactiver le réseau MAC aidera également à désactiver le réseau du simulateur iOS.
Vous pouvez désactiver votre Mac internet de "System Preferences...
" > "Network
" et désactivez la source réseau desire.
Pour désactiver votre source Internet MAC Ethernet:
Pour désactiver votre source Internet MAC WiFi (si votre MAC est en Wifi Internet):
Vous pouvez activer la connexion internet avec une application tierce telle que
Charles: http://www.charlesproxy.com/
Appuyez Sur Commande + Maj + T sur un Mac pour configurer la limitation.
Une idée ou un patch probablement fou:
Il suffit de basculer le drapeau de l'accessibilité du réseau
C'est le code que j'utilise pour basculer mon runtime de drapeau en déclenchant 'avertissement de mémoire de simulateur' et C'est complètement sûr, assurez-vous simplement que le code doit être en mode de débogage seulement
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
isInternetAvailable = !isInternetAvailable;
#endif
}
Vous pouvez utiliser Little Snitch pour couper le trafic réseau à tout processus individuel, y compris ceux qui s'exécutent sur le simulateur iOS. De cette façon, vous pouvez garder votre connexion internet et déconnecter votre application en cours d'exécution.
Avec Xcode 8.3 et iOS 10.3:
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)
Assurez-vous d'inclure @available(iOS 10.3, *)
en haut de votre fichier de suite de tests.
Vous pouvez également "activer le mode Avion" si vous préférez.
Une fois que Siri désactive le wifi ou active le mode Avion, vous devrez annuler le dialogue Siri qui indique que Siri nécessite internet. Ceci est accompli en appuyant sur le bouton d'accueil, qui rejette le dialogue et retourne à votre application.
Vous pouvez utiliser OHHTTPStubs et stub les requêtes réseau à des URL spécifiques pour échouer.
Si vous avez au moins 2 réseaux wifi pour vous connecter est un moyen très simple est d'utiliser un bug dans iOS simulator:
- quitter du simulateur (cmd-q) s'il est ouvert
- Connectez votre Mac à un wifi (il peut ne pas être connecté à internet, peu importe)
- lancez le simulateur (menu: xCode- > Open Developer Tool-> iOS Simulator) et attendez qu'il soit chargé
- commutateur wifi réseau à l'autre
- bénéfice
Le bug est que le simulateur essaie d'utiliser un réseau (IP?) qui n'est pas déjà connectée.
Jusqu'à ce que vous relanciez simulateur - il n'aura pas internet (même si ce premier réseau wifi que vous avez connecté avait une connexion internet), de sorte que vous pouvez exécuter (cmd-R) et arrêter (cmd -.) projet(s) à utiliser simulateur sans connexion, mais votre Mac sera connecté.
Ensuite, si vous devez exécuter simulator connected-il suffit de quitter et de le lancer.
Vous pouvez utiliser le conditionneur de liaison réseau sur votre Mac. Vous pouvez le télécharger sur le site Web du développeur apple. Il devrait être disponible là où nous obtenons les anciennes versions de Xcode et iOS. Avec ce conditionneur de réseau, vous pouvez changer la force du réseau de wifi à aucun réseau.
Aussi, lorsque vous installez le conditionneur réseau, il est installé dans les préférences système.
Il ya deux moyen de désactiver Simulateur IOS internet:
- Débranchez votre connexion réseau
- désactiver le Wi-Fi
C'est le moyen le plus simple