可达性 iOS 无法正常工作
Posted
技术标签:
【中文标题】可达性 iOS 无法正常工作【英文标题】:Reachability iOS doesn't work fine 【发布时间】:2015-03-17 11:40:51 【问题描述】:我们正在开发一个模块,用于检查 Internet 连接是否处于活动状态或未处于活动状态或已禁用。前面的场景运行良好,除了存在 WI-FI 连接但互联网未激活的情况。我们已确保未启用数据移动连接(3G、4G)。
我们已经看到,每个人都建议使用 Tony Million 的 Reachability 类,它取代了 Apple 的类。
下面是我们正在使用的代码:
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Reachability *reachability = [Reachability reachabilityWithHostname:@"www.google.com"]; //Cambiar por el servidor
reachability.reachableBlock = ^(Reachability *reachability)
NSLog(@"Network is reachable.");
;
reachability.unreachableBlock = ^(Reachability *reachability)
NSLog(@"Network is unreachable.");
;
// Start Monitoring
[reachability startNotifier];
return YES;
是否有 WI-FI 连接但网络不活跃,它不起作用,因为它转到:
reachability.reachableBlock = ^(Reachability *reachability)
NSLog(@"Network is reachable.");
而不是
reachability.unreachableBlock = ^(Reachability *reachability)
NSLog(@"Network is unreachable.");
我们缺少什么?
提前谢谢你,
问候
【问题讨论】:
请参考:***.com/questions/13411606/… 我用过这个,非常棒:github.com/tonymillion/Reachability 这是我在 Pandemic iPad 应用程序中放入的内容。 【参考方案1】:试试这个,
- (BOOL)isNetAvailable
BOOL isNetAvailable = NO;
Reachability *reach = [Reachability reachabilityWithHostName:@"www.google.com"];
NetworkStatus netStatus = [reach currentReachabilityStatus];
if (netStatus != NotReachable)
isNetAvailable = YES;
else
isNetAvailable = NO;
return isNetAvailable;
【讨论】:
【参考方案2】:你可以使用:
NSURLRequest *nsrequest = [NSURLRequest requestWithURL:[NSURL URLWithString: @"http://www.google.com"]];
NSHTTPURLResponse *response = nil;
NSError *error;
NSData *data = [NSURLConnection sendSynchronousRequest:nsrequest returningResponse:&response error:&error];
if(response.statusCode==0)
NSLog(@"Network is unreachable.");
else
NSLog(@"Network is reachable.");
【讨论】:
以上是关于可达性 iOS 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章