IOS 网络检测
来源:互联网 发布:传奇霸业轮回数据库 编辑:程序博客网 时间:2024/06/17 07:05
首先说明 苹果公司会拒绝没有检查网络状态就向用户提供下载选项的应用程序,并在网络出现错误时,确认网络连接并进行提醒。同样也拒绝使用过量数据的应用程序(如语音或数据资料),需进行当前连接测试,手机网络连接用户使用的是低质量的数据流,Wi-Fi连接用户的是高质量的数据流。
网络连接的测试的情况:
-(BOOL)checkWifiOK{ struct sockaddr_in localWifiAddress ; bzero( &localWifiAddress , sizeof(localWifiAddress ) ); localWifiAddress.sin_len = sizeof(localWifiAddress ); localWifiAddress.sin_family = AF_INET ; SCNetworkReachabilityRef netReach = SCNetworkReachabilityCreateWithAddress( NULL , (struct sockaddr *)&localWifiAddress ); SCNetworkConnectionFlags flags ; BOOL didReciveFlags = SCNetworkReachabilityGetFlags( netReach , &flags ); CFRelease(netReach) ; if( !didReciveFlags ) { NSLog(@"获取信息失败 "); } else { BOOL isReach = flags & kSCNetworkFlagsReachable ; BOOL connect = flags & kSCNetworkFlagsConnectionRequired ; if( (isReach && !connect ) == YES ) { if( (flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN ) //GPRS ,EDGE { NSLog(@"手机本地网络"); } else { NSLog(@"wifi 网络"); return TRUE ; } } else { NSLog(@"不能连接网络"); } } return FALSE ;}
注意:添加网络检测时,在项目的Framework中添加: systemConfiguration.framework 框架库。
有几种方法进行实现:
(1)使用一个UIDevice类 监视网络可达性,设定定时或非定时的监视器 (watcher),当网络变化,观察者收到通知,它创建一个回调 来通知在当前run循环中异步的监视器对象,并触发回调。
(2)重新获得IP和主机信息,在恢复站点IP地址后,使用
SCNetworkReachabilityCreateWithAddress(<#CFAllocatorRef allocator#>, <#conststruct sockaddr *address#>);传递包含站点的sockaddr记录,最后检查 kSCNetworkFlagsReachable 标志进行判断。
返回连接的IP地址:
hostname 返回当前设备的主机名称,gethostbyname()将主机名称转化为IP地址。:
-(NSString *)hostname{ char baseName[255]; int success = gethostname(baseName , 255 ); if(success != 0 ) return nil; baseName[255]='\0'; //模拟器返回当前主机名称后加 .local域,iphone 不会 return [NSString stringWithFormat:@"%s.local",baseName ]; return [NSString stringWithFormat:@"%s",baseName ]; }
可直接在网站 whatismyip.com 中返回连接的IP地址。(同步操作,容易造成阻塞)
-(NSString *)whatismyipdotcom
{
NSError * error ;
NSURL * ipURL = [NSURL URLWithString:@"http://whatismyip.com/automation/n09230945.asp"];
NSString * ip = [NSString stringWithContentsOfURL: ipURL encoding:NSUTF8StringEncoding error: &error ];
return ip ? ip :[error localizedDescription ];
}
- ios 检测网络
- ios网络连接检测
- IOS 网络检测
- iOS---检测网络状态
- ios 检测网络状态
- 检测iOS网络状态
- iOS----检测网络环境
- ios检测网络变化
- iOS 检测网络情况
- iOS检测网络状态
- iOS 检测网络连接
- iOS检测网络状态
- iOS网络检测
- iOS 检测网络状态
- ios 机型检测和网络检测
- ios检测网络是否存在
- ios检测网络是否存在
- IOS中检测网络环境
- getimagesize
- MFC消息响应机制分析
- How to batch executing SQL statements on db2
- 32个SEO方法提高网站的流量:
- NET鼠标右键菜单JS[原]
- IOS 网络检测
- Java中的wait方法
- android中震动
- apache nginx比较(转载)
- 测试代码
- 蜂群中的领导力
- C++中STRING转为INT
- DIV+CSS相对IE6、IE7和IE8的兼容问题
- css圆角