2009-10-26 17 views
11

mi aplicación tiene acceso a la Internet y sólo quiero para detectar si hay una conexión ya sea a través de wifi o por medio de la red de datos portadora o noiPhone SDK detectar la red Wifi y Carrier

Apple ha hecho un ejemplo para que "Accesibilidad"

https://developer.apple.com/iphone/library/samplecode/Reachability/

creo que sólo detecta el wifi y no a la red del operador

puede alguien decirme, ¿cuál es la mejor manera de hacer para detectar si hay una conexión (cualquier tipo de conexión)

¡Aprecia tu ayuda!

+1

Eso es un poco viejo. Hay una versión más reciente de Reachability de Tony Miller, que he utilizado [aquí] (https://github.com/tonymillion/Reachability) –

Respuesta

13

Esa muestra es exactamente lo que necesita.

Busque en Reachability.m. Te dirá si tienes alguna conexión y luego te dirá qué tipo de conexión tienes.

+1

Para abordar su pregunta más específicamente: el código de Accesibilidad detectará * cualquier tipo de conexión , no solo WiFi. Todo lo que tiene que hacer es importar las clases de Accesibilidad a su proyecto, luego instanciar un objeto Accesibilidad e ir desde allí. – Tim

9

El ejemplo de Accesibilidad puede ser exagerado si solo quiere detectar si está conectado o no y qué tipo de conexión está utilizando si está conectado. De hecho, el ejemplo también contiene código que muestra cómo configurar y utilizar devoluciones de llamada que le notifican cambios de estado.

Para obtener un fragmento del código fuente que le indica exactamente si está conectado o no, y qué tipo de conexión está utilizando, es posible que desee consultar mi respuesta a una pregunta similar, publicada here.

3

Una vez que realiza una solicitud a cualquier recurso web, el iPhone usa cualquier conexión que encuentre, utiliza wifi (como una prioridad más alta) y si wifi no está conectado, utiliza la red de operador. No hay configuraciones de código que impidan la red de operador.

Todo lo que tiene que hacer:

  • Comprobar la señal en el lugar de la prueba.
  • Marca el enlace que intentas alcanzar en Safari, para asegurarte de que no es tu aplicación la que tiene el problema.
  • contacto con el soporte portador si el enlace no funciona en Safari (con seguridad usando la red del operador)
+0

esta respuesta es para iampathik –

2

Estas técnicas son útiles, pero tenga en cuenta que la ruta del dispositivo a Internet puede consistir en varios diferentes tipos de conexiones. Por ejemplo, un iPhone o iPod touch podría estar usando WiFi para conectarse a un punto de acceso móvil, que a su vez tiene su propia conexión inalámbrica 3G. Por lo tanto, no es seguro asumir que la presencia de una conexión WiFi implica un ancho de banda mayor que 3G.

0

Accesibilidad (tanto el código de muestra de Apple como el código similar de otras personas y la SCNetworkReachability subyacente le indicarán que no hay acceso a Internet, que tendrá acceso a Internet a través de WiFi o que tendrá acceso a Internet a través datos móviles

Si tiene tanto Wi-Fi como datos móviles disponibles, le dirá "WiFi". No hay manera de descubrir que los datos móviles están disponibles cuando tiene WiFi. (Puede encontrar fácilmente ese móvil los datos están disponibles cuando no hay WiFi). No puede averiguar si el modo de avión está encendido (lo cual sería diferente de WiFi y de los datos móviles desactivados).

WiFi disponible no garantiza que una descarga use WiFi y no datos móviles. Puede comenzar una descarga en casa, dejar un minuto más tarde, WiFi desaparece, y iOS continuará felizmente la descarga a través de 3G. Puede establecer un indicador en la llamada de descarga para no permitir 3G. El código de error será -1009 = Sin acceso a internet, sin mencionar que 3G hubiera estado disponible.

Usando CTTelephonyNetworkInfo puede encontrar que está en un dispositivo que podría tener datos móviles (no un iPod Touch o iPad sin datos móviles, y hay una tarjeta SIM en el dispositivo).

Cuestiones relacionadas