¿Es posible deshabilitar la red en iOS Simulator?


430

Estoy tratando de depurar un comportamiento inconsistente que estoy viendo en una aplicación que obtiene sus datos principales de Internet. No veo los problemas en el simulador, solo en el dispositivo, por lo que me gustaría reproducir el entorno de red y conectividad en el simulador.

¿Hay alguna forma de deshabilitar la red en el simulador?

(Me estoy conectando a la Mac de forma remota para codificar, no hay otra opción en este momento, por lo que deshabilitar la red del sistema operativo no es una opción).


Creo que también puedes usar CharlesProxy para ejecutar pruebas similares
Honey

Respuestas:


273

Me temo que no, el simulador comparte cualquier conexión de red que esté usando el sistema operativo. Hace un tiempo presenté un informe de error de radar sobre la simulación de condiciones de red; podrías considerar hacer lo mismo.


52
No estoy seguro de si es en respuesta a este error de radar, pero las Herramientas para desarrolladores ahora incluyen una herramienta de acondicionador de enlace de red .
samvermette

77
Network Link Conditioner le permite especificar un porcentaje de paquetes que se descartarán, pero, por lo que he visto, desafortunadamente no hay forma de desactivar toda la conectividad.
modocache

11
Actualmente, Network Link Conditioner permite establecer una pérdida de paquetes del 100%, y parece funcionar.
Gabriele Petronella

44
Dado que el simulador comparte la conexión de red de la máquina host, puede apagar Internet en su máquina host para simular "red deshabilitada". No es ideal, pero funciona.
Adil Hussain

55
Espere, el Acondicionador de enlace de red se aplica a toda la máquina host, no solo al simulador. ¿Cómo es esto útil? Simplemente puedo desconectar mi ethernet si quiero eso.
sudo

1735

Use una jaula de Faraday simple para bloquear o limitar el nivel de señal de RF externo.

Puedes hacer el tuyo con papel de aluminio. Las aberturas deben ser más pequeñas que la longitud de onda de su servicio de datos si eso es lo que desea bloquear.

800 Mhz tiene una longitud de onda de 37 cm (14 "), 1900 Mhz tiene una longitud de onda de 16 cm (6").

Esto funciona mejor con un dispositivo real que con el simulador, ya que es difícil trabajar con Mac cuando está dentro de la jaula de Faraday ;-)

ingrese la descripción de la imagen aquí


179
Solo una sugerencia rápida, si crea una jaula de Faraday con un escritorio dentro, la Mac será mucho más fácil de trabajar.
Kevin Laity

86
su respuesta es interesante a pesar de que pidió un simulador
vignesh kumar

76
Como la pregunta era sobre el simulador, creo que haré uno de estos en Photoshop y lo configuraré como fondo de escritorio. Eso probablemente funcionará, ¿verdad?
Timothy Lee Russell

8
Este 'truco' ha sido utilizado de verdad por profesionales :) Cuando trabajaba en los teléfonos inteligentes de primera generación, solíamos usar latas de galletas robustas. No todas las marcas funcionaron, pero las que lo hicieron fueron perfectas.
Will

11
debe ser aceptado como respuesta correcta! (Prefiero usar plumbum box para iKryptonite)
gaussblurinc

309

Si. En Xcode, puede ir al Xcodeelemento de menú -> Open Developer Tools-> More Developer Toolsy descargar " Herramientas adicionales para Xcode ", que tendrá el Acondicionador de enlace de red.

Con esta herramienta, puede simular diferentes escenarios de red (como pérdida del 100%, 3G, DNS de alta latencia y más) y también puede crear sus propios escenarios personalizados.


77
si está en el sitio del desarrollador, está en el paquete HARDWARE IO TOOLS FOR XCODE.
líquido

156
De alguna manera, prefiero la idea de encerrar mi dispositivo en papel de aluminio.
Michael Robinson

14
Desde Xcode 8, el acondicionador de enlace de red está en el paquete " Herramientas adicionales para Xcode ".
ElegyD

66
Además, la pérdida del 100% acelera la conexión del host, por lo que no es una solución práctica. Si está preparado para desarrollar sin Internet, simplemente desconectar el equipo de su desarrollador es mejor que esta solución.
Jannie Theunissen

77
Está afectando a todos los mac. Quiero cerrar la conexión a Internet solo para el simulador, porque estoy usando la Mac de forma remota ...
JCarlosR

48

La única forma de deshabilitar la red en el simulador de iOS que conozco es usando herramientas como Little Snitch o Hands Off . Con ellos puede negar / bloquear cualquier conexión de red saliente o entrante. Puede configurarlo para que solo bloquee las conexiones desde la aplicación del simulador. Funciona como un firewall.


11
pero eso no hará que el simulador se comporte como si estuvieras fuera de línea. Simplemente hará que sus servidores no estén disponibles, lo cual es algo muy diferente.
Blitz

1
en realidad, LordT, ¡eso puede ser suficiente para las circunstancias específicas que tengo ...!
Paul Hammond el

phix23: ¿tiene preferencia entre esas dos herramientas sugeridas?
Paul Hammond el

No, no lo he hecho. Solo he probado Hands off, porque tiene más funciones.
Felix

2
+1: He usado Little Snitch exactamente para este propósito, probando para asegurarme de que una aplicación simulada funcione si la conexión de red está interrumpida.
hotpaw2

18

Simplemente apague su WiFi en Mac OSX, ¡esto funciona de maravilla!


1
No ayuda al OP que declaró específicamente que esta no era una opción, pero esta es una solución simple y perfecta para mí.
Johno


11

Simplemente actualizando la respuesta a la fecha actual. Desde Xcode 4 (?) Hay un panel de preferencias en /Applications/Utilitiesllamado Network Link Conditioner. O utiliza uno de los perfiles existentes o crea su propio perfil personalizado con 0 Kbps de enlace ascendente / descendente y 100% eliminado.


1
Solo quiero agregar, que si crea una configuración de red personalizada con ancho de banda 0, automáticamente la asume como un máximo. Es importante poner el 100% de pérdida de paquetes.
Denis Kutlubaev

Además, me gustaría agregar que este método elimina Internet de todo, no solo del simulador. Puede ser aún más fácil apagar completamente Internet. Sin embargo, es una herramienta muy útil ya que puede simular Internet E y 3G de diferente calidad.
Denis Kutlubaev

Esta es seguramente la mejor respuesta porque Network Link Conditioneres una herramienta oficial de Apple, y es totalmente gratuita, en comparación con Little Snitcho Hands Off.
fatuhoku

Hmm, parece que esta herramienta apaga la red para todo. También descubrí que no activa las notificaciones de accesibilidad (utilicé github.com/stefanomondino/STMReactiveReachability ).
fatuhoku

44
Tenga cuidado: la herramienta NETWORK LINK CONDITIONER afecta a TODA la máquina, no solo al iPhone Simulator. Si te remotas a tu Mac para desarrolladores, como lo hago con el host de compilación Xamarin, matará tu conexión.
John Kocktoasten

10

Dado que Xcode no proporciona dicha función, definitivamente usará alguna aplicación / herramienta de terceros. Apagar la red MAC también ayudará a apagar la red del simulador de iOS.

Puede apagar su MAC internet desde " System Preferences..."> " Network" y apagar la fuente de red deseada.

Para apagar su fuente de internet MAC Ethernet: Fuente de red EtherNet

Para apagar su fuente de Internet MAC WiFi (si su MAC está en Internet Wifi): ingrese la descripción de la imagen aquí



6

Una idea o parche probablemente loco:

Solo alterna la bandera de alcance de red

Este es el código que utilizo para cambiar mi tiempo de ejecución mediante la activación de la bandera 'Memoria Simulador de advertencia' y su completamente seguro, sólo asegúrese de código debe estar en modo de depuración solamente

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

1
Tengo una clase global con una función estática que verifica la conexión a Internet. El regreso falsees una gran idea. ¡Sin instalaciones, y puedo seguir trabajando de forma remota! Gracias.
JCarlosR

¿Dónde se isInternetAvailabledefine esto ?
CSawy

@CSawy Su bandera que envía el estado actual de la conexión a Internet en la clase de accesibilidad.
Darshit Shah

3

Puede usar Little Snitch para cortar el tráfico de red a cualquier proceso individual, incluidos los que se ejecutan en el simulador de iOS. De esa manera, puede mantener su conexión a Internet y desconectar su aplicación en ejecución.


3

Con Xcode 8.3 y iOS 10.3:

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

Asegúrese de incluir @available(iOS 10.3, *)en la parte superior de su archivo de suite de prueba.

Alternativamente, puede "Activar el modo avión" si lo prefiere.

Una vez que Siri apague el wifi o active el Modo avión, deberá cerrar el diálogo de Siri que dice que Siri requiere internet. Esto se logra presionando el botón de inicio, que cierra el diálogo y vuelve a su aplicación.


Es posible que no funcione en iOS11GM. No puedo encontrar la configuración de Wifi en el simulador.
Bill Chan

2
Usar Siri no es la única opción con Xcode 9 ahora que es posible activar múltiples aplicaciones. La activación de la aplicación de configuración de iOS para activar wifi ahora también funciona.
brandenbyers

3

Hay dos formas de deshabilitar el simulador de Internet de IOS:

  • Desenchufe su conexión de red
  • Desactiva el wifi

Es la forma más sencilla


3

Si su aplicación se está conectando a un dominio específico, simplemente puede agregarlo a su /etc/hostsarchivo y enrutarlo a una IP no existente en su red local ... Para la aplicación será lo mismo que si no hubiera conexión a Internet o No se puede acceder al servidor.

sudo nano /etc/hosts

agregue la siguiente línea:

192.168.1.123   example.com

o úselo 127.0.0.1si no está ejecutando un servidor web en su máquina local.



1

Una solución simple es crear un Modo avión para tu Mac. Aquí es cómo hacer esto:

  • ir a la red en Preferencias del sistema
  • haga clic en el menú desplegable Ubicación
  • haga clic en el ícono más para agregar una nueva ubicación
  • nombra la nueva ubicación 'Modo avión' o similar y haz clic en 'Listo'
  • seleccione la ubicación que acaba de crear en el menú desplegable Ubicación
  • haga clic en cada interfaz de red disponible en la lista a la izquierda de la ventana, deshabilitando cada una
  • haga clic en el menú Configurar iPv4 y elija Desactivar
  • para Wi-Fi, simplemente haga clic en el botón Desactivar Wi-Fi
  • haga clic en Aplicar, y esta ubicación bloqueará toda la actividad de la red

Cuando desee volver a activar la red, simplemente seleccione Automático en el menú desplegable Ubicación y haga clic en Aplicar


1

Te sugiero que uses la aplicación Charles Proxy en Mac

Le permite usar la Bandwidth Throttlefunción que se creó solo para ajustar la conexión de red

Acelerador de estrella / parada ⌘ command+ T
Configuración del acelerador ... ⌘ command+ T+⇧ shift


0

¡podría deshabilitar la red del host en su lugar!


77
¡Es inconveniente no poder ver StackOverflow al depurar los problemas de conexión de su aplicación!
fatuhoku

Lea la última línea de la pregunta: "(Me estoy conectando a la Mac de forma remota para codificar, no hay otra opción en este momento, por lo que deshabilitar la red del sistema operativo no es una opción)". Además, su sugerencia ya fue dada hace dos años, por benpalmer.
ToolmakerSteve

0

Si tiene al menos 2 redes wifi para conectarse, una forma muy simple es usar un error en el simulador de iOS:

  1. salir del simulador (cmd-q) si está abierto
  2. conecta tu Mac a un wifi (puede que no esté conectado a internet, no importa)
  3. inicie el simulador (menú: xCode-> Open Developer Tool-> iOs Simulator) y espere mientras se carga
  4. cambiar la red wifi a otra
  5. lucro

El error es que el simulador intenta usar una red (IP?) Que no está conectada todavía.

Hasta que reinicies el simulador, no tendrá Internet (incluso si esa primera red wifi que conectaste tenía conexión a Internet), por lo que puedes ejecutar (cmd-R) y detener (cmd-) proyectos para usar el simulador sin conexión, pero tu Mac estará conectada.

Luego, si necesita ejecutar el simulador conectado, simplemente salga y ejecútelo.


0

Puede usar el acondicionador de enlace de red en su Mac. Puede descargarlo del sitio web del desarrollador de Apple. Debería estar disponible donde obtengamos las versiones anteriores de Xcode e iOS. Con este acondicionador de red, puede cambiar la fuerza de la red de wifi a ninguna red.

Además, cuando instala el acondicionador de red, se instala en las preferencias del sistema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.