iOS开发

来源:互联网 发布:以撒的结合 mac 下载 编辑:程序博客网 时间:2024/05/22 00:28

你也许会有一个需求,需要判断当前网络的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的请求中,大家可以自己试试看,也许有惊喜。

就说这么多,大家一起学习吧。