我正在使用Apple提供的Reachability
课程,我正在收听reachabilityChanged:
通知:
- (void)reachabilityChanged:(NSNotification *)notification
{
Reachability *reach = [notification object];
if ([reach isKindOfClass: [Reachability class]]) {
NetworkStatus status = [reach currentReachabilityStatus];
if ((status == ReachableViaWiFi) || (status == ReachableViaWWAN)) {
// Some operations here
}
}
}
当我在设置中设置飞行模式或禁用WiFi和蜂窝数据时,我在reachabilityChanged:
中获得“NotReachable”状态,但是当我的设备似乎因任何原因暂时失去连接时(在设置),似乎没有检测到“NotReachable”状态。
我已经使用干扰器进行了一些测试,当设备进入状态栏中的“No Service”并且调用reachabilityChanged:
时,我看到NetworkStatus
是“ReachableViaWWAN” “而不是像我预期的那样”NotReachable“。
我需要在设备中检测到这种“无服务”状态,我该怎么办?
答案 0 :(得分:0)
信用转到this person。这对我有用:
- (BOOL)networkCheck
{
Reachability *wifiReach = [Reachability reachabilityForInternetConnection];
NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
switch (netStatus)
{
case NotReachable:
{
NSLog(@"%@",@"NETWORKCHECK: Not Connected");
return false;
break;
}
case ReachableViaWiFi:
{
NSLog(@"%@",@"NETWORKCHECK: Connected Via WiFi");
return true;
break;
}
case ReachableViaWWAN:
{
NSLog(@"%@",@"NETWORKCHECK: Connected Via WWAN");
return true;
break;
}
}
return false;
}
然后在ReachableViaWWAN案例中:
case ReachableViaWWAN:
{
NSLog(@"%@",@"NETWORKCHECK: Connected Via WWAN");
NSData *responseData = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"www.google.com"]] returningResponse:nil error:nil];
if (responseData != nil)
{
return true;
break;
}
else
{
return false;
break;
}
}