如何在IOS中获得漫游状态
我想在我的iOS应用程序进入漫游区时收到通知,我已经阅读NSLocale
, SCNetworkReachability
和核心电话(我可能错过了一些东西)的文档。 我需要从sim(或者其他可能的方式)得到这个信息。
通常的方法是从核心电话接口获得电信公司的国家代码,然后将其与反向地理编码的国家代码进行比较。
优点:适用于VPN和用户在漫游时禁用数据。 缺点:没有位置不工作。
我没有任何非版权代码,但是您需要的位置标记字典中您需要的国家/地区代码的关键字是@“CountryCode”。地理编码将如下所示: –
CLGeocoder* geocoder = [[CLGeocoder alloc] init]; [geocoder reverseGeocodeLocation:location completionHandler: ^(NSArray* placemarks){}]
提供者的国家代码是
NSString* homeCountry = [netInfo.subscriberCellularProvider isoCountryCode];
希望这可以帮助
没有用于检测漫游状态的iOS API,但是您可以使用http://ipinfo.io (我自己的服务)等第三方服务,根据设备的IP地址查找甚至运营商代码的当前国家。 然后,您可以将其与CTCarrier的详细信息进行比较,以确定设备是否正在漫游。 以下是标准的ipinfo.io API响应:
$ 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" }
自定义软件包也可以包含移动IP的mnc / mcc详细信息。 有关详细信息,请参阅http://ipinfo.io/developers 。