Ios 可达性返回连接到3G时通过WiFi可达
在iphone5s中,WiFi被检测为3G,在我的iphone4中,这是正常的。 两者都在iOS 7.1中 在某些设备中也会发生这种情况 禁用WiFi并连接3G,我仔细检查了互联网连接是否正常,以及设备本身是否正常 知道为什么吗 编辑1: 代码如下:Ios 可达性返回连接到3G时通过WiFi可达,ios,objective-c,reachability,Ios,Objective C,Reachability,在iphone5s中,WiFi被检测为3G,在我的iphone4中,这是正常的。 两者都在iOS 7.1中 在某些设备中也会发生这种情况 禁用WiFi并连接3G,我仔细检查了互联网连接是否正常,以及设备本身是否正常 知道为什么吗 编辑1: 代码如下: - (void)registerReachabilityNotification { [[NSNotificationCenter defaultCenter] addObserver:self
- (void)registerReachabilityNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(checkNetworkStatus:)
name:kReachabilityChangedNotification object:nil];
Reachability *reach = [Reachability reachabilityForInternetConnection];
[reach startNotifier];
NSNotification *note = [[NSNotification alloc] initWithName:kReachabilityChangedNotification object:reach userInfo:nil];
[self checkNetworkStatus:note];
}
- (void)checkNetworkStatus:(NSNotification*)notification
{
Reachability *reach = notification.object;
NSParameterAssert([reach isKindOfClass: [Reachability class]]);
NetworkStatus internetStatus = [reach currentReachabilityStatus];
switch (internetStatus)
{
case NotReachable:
{
NSLog(@"No internet connection.");
break;
}
case ReachableViaWiFi:
{
NSLog(@"The internet is working via WIFI.");
break;
}
case ReachableViaWWAN:
{
NSLog(@"The internet is working via WWAN.");
break;
}
}
}
编辑1:
此代码:
NetworkStatus nStats = [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus];
if (nStats != ReachableViaWiFi) {
NSLog(@"nStats != ReachableViaWiFi");
}
if (nStats == ReachableViaWiFi) {
NSLog(@"WIFI");
}
else if (nStats == ReachableViaWWAN) {
NSLog(@"WWAN");
}
else if (nStats == NotReachable) {
NSLog(@"not reachable");
}
else {
NSLog(@"undetermined reachability.");
}
给我这个:
Reachability Flag Status: WR t------ localWiFiStatusForFlags
nStats != ReachableViaWiFi
not reachable
我的方法完全错误,下面是正确方法的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSLog(@"CONNECTION: %@", NSStringFromNetworkStatus([MobileControlHandler checkConnection]));
return YES;
}
+ (NetworkStatus)checkConnection
{
NetworkStatus wifiStatus = [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus];
NetworkStatus internetStatus = [[Reachability reachabilityForInternetConnection] currentReachabilityStatus];
if (wifiStatus == ReachableViaWiFi) {
return ReachableViaWiFi;
}
else if (wifiStatus != ReachableViaWiFi && internetStatus == ReachableViaWWAN) {
return ReachableViaWWAN;
}
else {
return NotReachable;
}
}
FOUNDATION_EXPORT NSString *NSStringFromNetworkStatus(NetworkStatus netStatus)
{
if (netStatus == ReachableViaWiFi) {
return @"ReachableViaWiFi";
} else if (netStatus == ReachableViaWWAN) {
return @"ReachableViaWWAN";
} else if (netStatus == NotReachable) {
return @"NotReachable";
} else {
return @"Undetermined reachbility flag";
}
}
绘图:
只需从苹果下载新的可达性类 它也可以在ios 8上运行 有关iOS应用程序开发的更多互动内容,请查看
这两部手机使用的是同一个载波吗?是的,它们都使用同一个载波。我想请您重新回答这个问题,因为这实际上是一个编码问题<代码>可达性是苹果公司提供的一个类,用于证明互联网是否可用。@Idan我们需要更多信息。。。您是否在iPhone 5S上启用了wifi并加入了网络?我认为可达性总是返回可用的“最佳”网络选项。
Reachability Flag Status: WR t------ localWiFiStatusForFlags
Reachability Flag Status: WR t----l- networkStatusForFlags
CONNECTION: ReachableViaWWAN
#import <Reachability.h>
if ([Reachability currentReachabilityStatus] == NotReachable) {
...
}