iOS开发 - 获取网关IP,运营商,位置,可判断是在国内还是国外
2023-09-11 14:21:22 时间
你也许会有一个需求,需要判断当前网络的IP地址是在国内还是国外,也许你需要判断连接的Wi-Fi运营商是哪家的,虽然网上也有方法,但是却写得很简单,没有进行深入的说明,所以今天博主重新整理,给大家一个方法来处理:
首先获取IP:
-(NSString *)getWANIP
{
//通过淘宝的服务来定位WAN的IP,否则获取路由IP没什么用
NSURL *ipURL = [NSURL URLWithString:@"http://ip.taobao.com/service/getIpInfo.php?ip=myip"];
NSData *data = [NSData dataWithContentsOfURL:ipURL];
NSDictionary *ipDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSString *ipStr = nil;
if (ipDic && [ipDic[@"code"] integerValue] == 0) { //获取成功
ipStr = ipDic[@"data"][@"country"];
}
return (ipStr ? ipStr : @"");
}
//获取到的信息给大家放这里:
{
code = 0;
data = {
area = "华东";
"area_id" = 300000;
city = "杭州市";
"city_id" = 330100;
country = "中国";
"country_id" = CN;
county = "";
"county_id" = "-1";
ip = "xxxxxxxxx";
isp = "电信";
"isp_id" = xxxxxxx;
region = "浙江省";
"region_id" = xxxxxx;
};
}
通过以上信息,可以实现判断运营商(当然也有其他方法啦),判断是国内还是国外(这个貌似少有方法可以判断,我说的是实时的哦),位置信息(这个无关痛痒了,LBS也可以啦,或者基于其他第三方的也行的)。
注意一点,这里的请求是同步的哦,但是速度很快,你也可以改造成异步,GET,POST都可以,放入链接到你对应的请求中就可以啦,当作简单的url来处理即可。
遇到一个问题就是,放入博主自定义的异步请求中,然后和dispatch_group的enter_group,leave_group一起用的时候不知道为什么卡住主线程了,要几十秒到一分多钟才能结束,很奇怪哦,但是上面这个同步方法一秒都不需要,博主索性直接同步来了,目前稳定,没试过放入AF的请求中,大家可以自己试试看,也许有惊喜。
就说这么多,大家一起学习吧。
相关文章
- iOS 开发者证书打包项目未包含最新的UDID
- 计算机网络安全基础知识1:渗透测试,网络连接的核心TCP/IP体系结构,公网,内网,ip地址和端口
- 《iOS应用开发》——1.2节启程
- Cocoapods 报警告Automatically assigning platform ios with version 9.0 on target....
- Hello_IOS ios开发transform属性
- iOS 仿支付宝密码支付
- SwiftUI iOS 精品项目之每天收集的故事卡片(教程含源码)
- Nginx负载均衡的4种方式 :轮询-Round Robin 、Ip地址-ip_hash、最少连接-least_conn、加权-weight=n
- iOS端架构、基本组成与使用说明
- SwiftUI iOS 颜色组件之 Material Design Color (教程含源码)
- IOS 发布被拒 PLA 1.2问题 整个过程介绍 02 个人账户升级公司账户
- host文件介绍与使用:域名与IP映射数据库、作用(加快域名解析、方便局域网用户、屏蔽网站、使用本地域名替代繁琐的ip)
- iOS 静态库制作(Xcode9.0 版本)(注:亲测.a静态文件放在Unity Plugins/IOS 也可用)
- 怎么修改Elasticsearch的对外ip 默认是本地IP 127.0.0.1
- iOS - OC/Swift:验证手机号/固话用正则表达式
- iOS - 直播相关文章