Cómo get el estado de roaming en IOS

Quiero recibir una notificación cuando ingrese en el área de roaming en mi aplicación iOS, ya he leído la documentation de NSLocale , SCNetworkReachability y la telefonía central (es posible que haya extrañado algo). Necesito get esta información de sim (o de cualquier otra forma si es posible).

El método habitual sería get el código de país del operador de la interfaz de telefonía central y luego compararlo con el código de país de la geoencoding inversa de la location.

Ventajas: funciona con VPN y cuando el usuario ha deshabilitado los datos al roaming. Desventajas: no funciona sin location.

No tengo ningún código que no sea de copyright para ti, pero la key que necesitas en el dictionary de marcas de lugar que necesitas para el código de país es @ "CountryCode". La geoencoding sería algo como:

 CLGeocoder* geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:location completionHandler: ^(NSArray* placemarks){}] 

El código de país para el proveedor sería

 NSString* homeCountry = [netInfo.subscriberCellularProvider isoCountryCode]; 

Espero que esto ayude

No hay una API de iOS para detectar el estado de roaming, pero puede usar services de terceros como http://ipinfo.io (mi propio service) para averiguar el país actual del código de operador uniforme según la dirección IP del dispositivo. A continuación, puede comparar eso con los detalles de CTCarrier para determinar si el dispositivo está en itinerancia. Aquí está la respuesta estándar API ipinfo.io:

 $ curl ipinfo.io/24.32.148.1 { "ip": "24.32.148.1", "hostname": "doc-24-32-148-1.pecos.tx.cebridge.net", "city": "Pecos", "region": "Texas", "country": "US", "loc": "31.3086,-103.5892", "org": "AS7018 AT&T Services, Inc.", "postal": "79772" } 

Hay packages personalizados disponibles que también incluyen los detalles de mnc / mcc de IP mobilees. Consulte http://ipinfo.io/developers para get más detalles.