[英]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.