如何在IOS中获取漫游状态



我想在iOS应用程序中进入漫游区时得到通知,我已经阅读了NSLocaleSCNetworkReachability和核心电话的文档(我可能错过了一些东西)。我需要从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详细信息。

我们以前在iOS上也遇到过同样的问题,我们最终为其构建了一个专用的API。它通过将设备的IP地理位置(基于请求方的IP地址)与提供的GPS位置进行比较来工作。如果用户被检测到在由其IP地址确定的国家之外,则他们被视为正在漫游。

我们决定提供这个API免费和无限制,没有限制,没有节流。没有信用卡,甚至不需要账户,只需运行一个简单的查询:

curl -X GET --header 'Accept: application/json' 'https://api.bigdatacloud.net/data/am-i-roaming?latitude=[your latitude]&longitude=[your longitude]'  

反应很简单,只是一个真或假:

{
"isRoaming": true
}

它也很快!我们的服务器通常在不到1毫秒的时间内做出响应。

如果通过VPN/代理或非蜂窝接口执行,此API显然会给出假阳性结果,因此建议您在拨打电话时确保使用蜂窝接口。

享受吧!

相关内容

  • 没有找到相关文章

最新更新