¿Cómo saber si 'Datos de la networking mobile' está habilitado o deshabilitado (incluso cuando está conectado por WiFi) en iOS?

Tengo una aplicación que quiero poder utilizar para get un informe de estado de connection después de cierto intervalo de time determinado. Incluso cuando estoy conectado o asociado a una networking Wifi, me gustaría saber si el acceso a los datos está habilitado a través de la networking celular. Esto significa que, si después de un cheque, puedo separarme elegantemente de la networking Wi-Fi, sabiendo que hay una connection celular disponible a la cual el dispositivo se conectará.

Los methods de scope actuales solo me brindan información sobre la disponibilidad de celulares solo cuando estoy conectado a eso y no hay mucha información sobre cómo get estos datos antes de realmente conectarse a la interfaz.

Buscando una solución similar a la que está disponible en Android, como se explica en este enlace .

ACLARACIÓN

No estoy buscando para ver si mi dispositivo tiene capacidades celulares. Estoy tratando de establecer si el usuario ha habilitado / deshabilitado el acceso a los datos a través de la networking mobile, y quisiera saber esta información incluso si estoy conectado a Wifi. El usuario puede activar y desactivar esto yendo a Configuración.

No hay api disponibles para que la aplicación pueda consultar si los datos mobilees están habilitados. Puede usar cellularDataRestrictionDidUpdateNotifier y restrictedState de CTCellularData para saber si el usuario ha habilitado o inhabilitado el acceso a datos celulares para su aplicación. Ese es el máximo de iOS que permite una aplicación. E incluso esto no es confiable, ya que si elimina el sim del dispositivo, aún le dará el estado de estado restringido anterior.

https://github.com/ashleymills/Reachability.swift Reachability tiene un método para determinar si la networking es accesible a través de WWAN

var isReachableViaWWAN: Bool { // Check we're not on the simulator, we're REACHABLE and check we're on WWAN return isRunningOnDevice && isReachableFlagSet && isOnWWANFlagSet } 

Creo que tienes que repensar sobre lo que estás planeando: Nunca serás capaz de determinar si una connection confiable (datos) estará disponible en cualquier momento futuro:

  • El usuario podría haber deshabilitado la transferencia de datos a través de su proveedor de telefonía mobile, por lo que si se interrumpe WiFi, la connection celular aún no proporcionará datos.
  • O el usuario podría cambiar esto inmediatamente en la configuration.
  • O la connection celular podría bajar en el mismo momento en que se desconecta la connection Wi-Fi (mientras se entra en una habitación protegida o algo así).
  • Y podrían pasar muchas más cosas, mientras tanto en una sala secreta ™

Simplemente tendrá que lidiar con la desconectividad y proporcionar un comportamiento benevolente en tal caso (en lugar de, por ejemplo, estrellarse).

Puedes conocer todos los escenarios:

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; Reachability *reachablity=[Reachability reachabilityWithHostName:@"google.com"]; [reachablity startNotifier]; // reachablity = [Reachability reachabilityForInternetConnection]; NetworkStatus remoteHostStatus = [reachablity currentReachabilityStatus]; if(remoteHostStatus == NotReachable) { NSLog(@"network not available "); } else if (remoteHostStatus == ReachableViaWiFi) { NSLog(@"connect with wifi"); } else if (remoteHostStatus == ReachableViaWWAN) { NSLog(@"Cellulor network "); } return netwrokCheck;