无法识别何时删除主机的iOS可达性
我正在构build一个应用程序,并尝试检查并查看设备是否仍然可用(通过连接到设备IPAddress)。 我正在使用可达性来确认它是否可用。
当我为iOS设备进行networking访问时(例如打开飞行模式),一切工作正常,但是如果我从networking中删除设备,可达性似乎没有注意到这一变化。
似乎可达性caching的结果,并没有看到更新。
那么不要使用可达性!
使用这一点的代码,而不是一个治疗;
NSString *connected = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"]]; wait(25000); if (connected == NULL) { NSLog(@"Not Connected"); //Code to show if not connected UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Oops! You aren't connected to the Internet." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; } else { NSLog(@"Connected Successfully!"); //Any other code for successful connection }
SCReachability
API只检查本地硬件是否configuration为可以达到指定的地址; 它实际上并没有试图达到它。 要确定目标是否活着并踢,你必须尝试打开一个连接。
看看这个答案 。 虽然pixelbit的答案是可行的,burtlo是正确的,只是等待25秒是不是一个好主意。 使用NSURLConnection更清洁。
苹果更新了Reachabilty类文件。 你可以用最新的Xcode进行testing。 这里是链接: 苹果Reachabilty示例代码
我使用Xcode 8.3.1在iPhone 6 10.3.1版上进行了testing。 它会通知用户networking状态的变化。
- 我应该在每个UIViewController中侦听可达性更新吗?
- IOS dispatch_get_main_queue()被多次调用
- 在Swift中使用Reachability,NSNotification和Network Link Conditioner检测networking连接变化
- 可达性示例代码
- 如何testingEDGE或GPRS或任何其他慢/坏的networking
- 如何在Swift中使用reachabilityWithHostName?
- iPhone可到达的类
- 如何知道我的iPhone / iPad是连接到2G还是3G?
- iOS / iPhone可达性 – 如何使用Reachability.m / .h检查互联网何时丢失/无法访问