[英]Always getting Not Reachable in iOS7
早些时候我一直使用Tony Million的Reach-ability而且它总是工作正常。现在我也尝试过Apple的Reach-ability但是每次我尝试访问时我总是得到Internet而不是Reachable的响应。
还有什么我应该检查的吗?
这就是我做的
Reachability * reach = [Reachability reachabilityWithHostname:@"www.google.com"];
reach.reachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
blockLabel.text = @"Block Says Reachable";
});
};
reach.unreachableBlock = ^(Reachability * reachability)
{
dispatch_async(dispatch_get_main_queue(), ^{
blockLabel.text = @"Block Says Unreachable";
});
};
[reach startNotifier];
您还可以使用它来检查Internet连接,首先您需要导入您的文件
#import <SystemConfiguration/SCNetworkReachability.h>
#include <netinet/in.h>
在.h文件中
- (BOOL) connectedToNetwork
{
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags)
{
return NO;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
return (isReachable && !needsConnection) ? YES : NO;
}
如果此方法返回YES,则可以使用Internet连接。
愿这对你有帮助......
如果遇到同样的问题,我打开Reachability.m文件并提交3g。
#if TARGET_OS_IPHONE
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
{
// We're on 3G.
if(!self.reachableOnWWAN)
{
// We don't want to connect when on 3G.
connectionUP = NO;//Commit this line
}
}
#endif
希望这能解决你的问题。
#if TARGET_OS_IPHONE
if(flags & kSCNetworkReachabilityFlagsIsWWAN)
{
// We're on 3G.
if(!self.reachableOnWWAN)
{
// We don't want to connect when on 3G.
//connectionUP = NO;
}
}
#endif
Reachability *r = [Reachability reachabilityWithHostName:@"www.Google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if ((internetStatus != ReachableViaWiFi) && (internetStatus != ReachableViaWWAN))
{
blockLabel.text = @"Block Says Unreachable";
}
else
{
blockLabel.text = @"Block Says Reachable";
}
旧的Reachability文件并不好。 Apple已更新其可访问性文件。
点击这里
https://developer.apple.com/Library/ios/samplecode/Reachability/Introduction/Intro.html
在这里下载。
https://developer.apple.com/Library/ios/samplecode/Reachability/Reachability.zip
我对Tony Million的Reachability有同样的问题:网络状态始终设置为NotReachable。 我通过添加SystemConfiguration Framework来修复它
希望能帮助到你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.