iOS可达性未检测到“;“无服务”;在该设备中,作为;“无法到达”;
我正在使用Apple提供的iOS可达性未检测到“;“无服务”;在该设备中,作为;“无法到达”;,ios,reachability,connectivity,cellular-network,Ios,Reachability,Connectivity,Cellular Network,我正在使用Apple提供的Reachability类,我正在监听reachabilityChanged:通知: - (void)reachabilityChanged:(NSNotification *)notification { Reachability *reach = [notification object]; if ([reach isKindOfClass: [Reachability class]]) { NetworkStatus status =
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:
时,我看到NetworkStatus
是“reachable viawan”,而不是我所期望的“NotReachable”
我需要在设备中检测到这样的“无服务”状态,我怎么能呢?信用卡归谁。这对我很有用:
- (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;
}
然后在可到达的Viawan案例中:
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;
}
}
您是否通过usb连接到您的计算机?它正在共享网络连接吗?@Fogmeister它被插入以查看Xcode中的日志,但它只支持蜂窝数据。但是,如果您的计算机正在通过usb共享其Internet连接,则手机仍将具有连接。@Fogmeister我已断开设备与计算机的连接,并且当设备“无服务”时,我仍处于“可访问的网络”状态……您解决过这个问题吗?我也有同样的问题。