web-dev-qa-db-fra.com

Est-il possible de désactiver le réseau dans iOS Simulator?

J'essaie de déboguer un comportement incohérent que je constate dans une application dont les données primaires sont stockées sur Internet. Je ne vois pas les problèmes dans le simulateur, mais uniquement dans l'appareil. J'aimerais donc reproduire l'environnement de réseau et de connectivité dans le simulateur.

Existe-t-il un moyen de désactiver le réseau dans le simulateur?

(Je me connecte au Mac à distance pour coder, pas d'autre choix pour le moment, donc la désactivation du réseau du système d'exploitation n'est pas une option).

386
Paul Hammond

Je crains que non - le simulateur partage la connexion réseau utilisée par le système d'exploitation. J'ai déposé un rapport de bogue radar sur la simulation des conditions du réseau il y a quelque temps; vous pourriez envisager de faire la même chose.

250
Noah Witherspoon

Utilisez un simple cage de Faraday pour bloquer ou limiter le niveau du signal externe RF.

Vous pouvez fabriquer le vôtre avec du papier d'aluminium. Les ouvertures doivent être inférieures à la longueur d'onde de votre service de données si c'est ce que vous souhaitez bloquer.

800 MHz ont une longueur d'onde de 37 cm (14 "), 1900 MHz a une longueur d'onde de 16 cm (6").

Cela fonctionne mieux avec un appareil réel qu'avec le simulateur, car il est difficile de travailler sur un Mac lorsqu'il se trouve dans la cage de Faraday ;-)

enter image description here

1582
progrmr

Oui. Dans Xcode, vous pouvez aller à Xcode élément de menu -> Open Developer Tools -> More Developer Tools et télécharger " Outils supplémentaires pour Xcode ", qui aura le lien réseau Conditionneur.

À 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.

270
swathy valluri

Le seul moyen de désactiver le réseau sur le simulateur iOS que je connaisse consiste à utiliser des outils tels que Little Snitch ou Hands Off . Avec eux, vous pouvez refuser/bloquer toutes les connexions réseau sortantes et entrantes. Vous pouvez le configurer pour qu'il bloque uniquement les connexions à partir de l'application de simulation. Fonctionne comme un pare-feu.

46
Felix

Il suffit de désactiver votre réseau Wi-Fi sous Mac OSX, cela fonctionne vraiment bien!

15
benpalmer

Téléchargement Package d'outils supplémentaires (Network Link Conditioner)

Description

Exemple en Sierra: enter image description here

enter image description here

13
Nik Kov

Juste mettre à jour la réponse à la date du jour. Depuis Xcode 4 (?), Il existe un volet de préférences dans /Applications/Utilities appelé Network Link Conditioner. Soit vous utilisez l’un des profils existants, soit vous créez votre propre profil personnalisé avec 0 Kbps Uplink/Downlink et 100% abandonné.

11
user207616

Étant donné que Xcode ne fournit pas cette fonctionnalité, vous utiliserez certainement une application/un outil tiers. La désactivation du réseau MAC aidera également à désactiver le réseau du simulateur iOS.

Vous pouvez désactiver votre connexion Internet MAC à partir de "System Preferences..."> "Network" et désactiver la source de réseau souhaitée.

Pour désactiver votre source Internet Ethernet MAC: EtherNet Network Source

Pour éteindre votre source Internet WiFi MAC (si votre MAC est connecté à Internet par Wifi): enter image description here

9
Ali

Une idée ou un patch probablement fou:

Il suffit de basculer l'indicateur d'accessibilité du résea

C’est ce code que j’utilise pour basculer l’exécution de mon drapeau en déclenchant 'Avertissement de la mémoire du simulateur' et son COMPLETELY SAFE, assurez-vous simplement que le code doit être en mode DEBUG seulement

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif 
}
6
Darshit Shah

Vous pouvez étouffer 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 régulation.

6
mabounassif

Vous pouvez utiliser Little Snitch pour couper le trafic réseau vers tout processus individuel, y compris ceux exécutés sur le simulateur iOS. De cette façon, vous pouvez conserver votre connexion Internet et déconnecter votre application en cours d'exécution.

3
Eran Goldin

Avec Xcode 8.3 et iOS 10.3:

XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)

Veillez à 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 Wi-Fi ou active le mode Avion, vous devez fermer le dialogue Siri qui indique que Siri nécessite Internet. Pour ce faire, appuyez sur le bouton d'accueil, ce qui ferme le dialogue et retourne à votre application.

3
brandenbyers

Si votre application se connecte à un domaine spécifique, vous pouvez simplement l'ajouter à votre fichier /etc/hosts et le router vers une adresse IP non existante de votre réseau local ... Pour l'application, ce sera la même chose que s'il y avait Il n'y avait pas de connexion Internet ou le serveur n'est pas accessible.

Sudo nano /etc/hosts

ajoutez la ligne suivante:

192.168.1.123   example.com

ou utilisez 127.0.0.1 si vous n'exécutez pas de serveur Web sur votre ordinateur local.

2
Dion

Vous pouvez utiliser OHHTTPStubs et stub les demandes de réseau à des URL spécifiques pour échouer.

2
mwhuss

Il y a deux moyen de désactiver IOS Internet simulateur:

  • Débranchez votre connexion réseau
  • Désactiver le Wi-Fi

C'est le moyen le plus simple

2
Daniel Beltrami

vous pouvez désactiver le réseau de l'hôte à la place!

1
wshcdr

Vous pouvez utiliser le conditionneur de liaison réseau sur votre Mac. Vous pouvez le télécharger à partir du site Web du développeur Apple. Il devrait être disponible là où se trouvent les anciennes versions de Xcode et iOS. Avec ce climatiseur de réseau, vous pouvez modifier la force du réseau de wifi à aucun réseau.

De plus, lorsque vous installez le climatiseur réseau, il est installé dans les préférences système.

0
Astha Trivedi

Si vous avez au moins 2 réseaux wifi pour vous connecter est un moyen très simple d'utiliser un bug dans un simulateur iOS:

  1. quitter le simulateur (cmd-q) s'il est ouvert
  2. connectez votre Mac à un réseau wifi (ce n'est peut-être pas connecté à Internet)
  3. lancer le simulateur (menu: xCode-> Ouvrir l’outil de développement-> iOs Simulator) et attendre qu’il soit chargé
  4. basculer le réseau wifi vers un autre
  5. profit

Le bogue est que le simulateur essaie d'utiliser un réseau (IP?) Qui n'est pas déjà connecté.

Jusqu'à ce que vous ayez relancé le simulateur, il n'aura pas Internet (même si le premier réseau wifi auquel vous vous êtes connecté disposait d'une connexion Internet). Vous pouvez donc exécuter (cmd-R) et arrêter (cmd-.) Projet (s) d'utiliser le simulateur sans connexion, mais votre Mac sera connecté.

Ensuite, si vous devez exécuter le simulateur connecté, quittez-le et lancez-le.

0
iGore

Une solution simple consiste à créer un mode avion pour votre Mac. Voici comment faire ceci:

  • aller dans le réseau dans les préférences système
  • cliquez sur le menu déroulant Emplacement
  • cliquer sur l'icône plus pour ajouter un nouvel emplacement
  • nommez le nouvel emplacement 'Mode avion' ou similaire, puis cliquez sur 'Terminé'
  • sélectionnez l'emplacement que vous venez de créer dans le menu déroulant Emplacement
  • cliquez sur chaque interface réseau disponible dans la liste située à gauche de la fenêtre, désactivant chacune d'elles
  • cliquez sur le menu Configurer iPv4, puis choisissez Désactivé.
  • pour le Wi-Fi, il suffit de cliquer sur le bouton Désactiver le Wi-Fi.
  • cliquez sur Appliquer. Cet emplacement bloquera toute activité sur le réseau.

Lorsque vous souhaitez réactiver le réseau, sélectionnez simplement Automatique dans le menu déroulant Emplacement, puis cliquez sur Appliquer.

0
ut9081