可达性帮助 - WiFi 检测
Posted
技术标签:
【中文标题】可达性帮助 - WiFi 检测【英文标题】:Reachability Help - WiFi Detection 【发布时间】:2011-08-19 14:02:23 【问题描述】:我已将 Reachability 导入到我的应用程序中,我有几个操作方法问题要问大家。让我先解释一下我的应用程序和其他工具。
此应用程序同时与两个事物进行通信,即 ad-hoc 网络和通过 3G 的互联网。注意:ad-hoc 网络未连接到互联网。这完美地工作 - 它已经实现并进行了出色的测试。
话虽如此,我想实现可达性来检测两件事。
1) 用户是否连接到 wifi ad-hoc 网络? (如果可能的话,更好的是检测它是否连接到前缀为 WXYZ 的 wifi ad-hoc 网络。例如,如果列出了两个网络,一个称为 Linksys,另一个称为 WXYZ-Testing_Platform,它知道无论它是否连接到 WXYZ)。
2) 用户可以通过3G(或2G等)连接互联网并访问我们的服务器吗?
提前致谢
编辑以包括未来观众的答案:
对于 1),我的代码如下所示:
.h
#import <SystemConfiguration/CaptiveNetwork.h> //for checking wifi network prefix
.m
- (BOOL) connectedToWifi
CFArrayRef myArray = CNCopySupportedInterfaces();
// Get the dictionary containing the captive network infomation
CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0));
NSLog(@"Information of the network we're connected to: %@", captiveNtwrkDict);
NSDictionary *dict = (__bridge NSDictionary*) captiveNtwrkDict;
NSString* ssid = [dict objectForKey:@"SSID"];
if ([ssid rangeOfString:@"WXYZ"].location == NSNotFound || ssid == NULL)
return false;
else
return true;
对于 2),我导入了 Reachability 并在我连接服务器时使用此方法...注意:将 http://www.google.com 替换为服务器信息
-(void) checkIfCanReachServer
UIAlertView *errorView;
Reachability *r = [Reachability reachabilityWithHostName:@"http://www.google.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if(internetStatus == NotReachable)
errorView = [[UIAlertView alloc]
initWithTitle: @"Network Error"
message: @"Cannot connect to the server."
delegate: self
cancelButtonTitle: @"OK" otherButtonTitles: nil];
[errorView show];
【问题讨论】:
【参考方案1】:Reachability 仅让您知道设备是否可以成功向外发送数据包。所以
对于 1) 你应该参考iPhone get SSID without private library。对于 2) 您将仅使用 Reachability 来检查 Internet 连接,然后您需要使用 NSURLConnection
或其他网络库来确保您可以访问您的服务器。
【讨论】:
以上是关于可达性帮助 - WiFi 检测的主要内容,如果未能解决你的问题,请参考以下文章