我需要知道如何检测WiFi状态,我通过true
检查isNetworkconnected()
时获得ConnectivityManager
返回,但实际上响应是由受人尊敬的WIFI服务器操纵的。
假设我访问了WIFI免费但我需要登录该网络进行访问的地方,但同时如果我在没有登录该wifi的情况下启动我的应用程序,我将获得WIFI连接返回{{1} } via true
(仅作为android检查是否连接了WIFI),以及来自该wifi主机的一些意外响应。
如何检测此类连接?在这种情况下,我看到有多个应用程序加载器正在运行,但它们如何检测到它
答案 0 :(得分:0)
我认为您无法通过连接管理器进行测试。由于您所说的原因,结果总是不可靠。
所以,正如我所看到的,你有两个选择:
1)您可以像批准的列表一样测试Wi-Fi的SSID,如果用户不在该SSID上,则会提醒他们。
以下是获取当前连接的路由器(iOS 7 +)的SSID的方法:
@import SystemConfiguration.CaptiveNetwork;
/** Returns first non-empty SSID network info dictionary.
* @see CNCopyCurrentNetworkInfo */
- (NSDictionary *)fetchSSIDInfo
{
NSArray *interfaceNames = CFBridgingRelease(CNCopySupportedInterfaces());
NSLog(@"%s: Supported interfaces: %@", __func__, interfaceNames);
NSDictionary *SSIDInfo;
for (NSString *interfaceName in interfaceNames) {
SSIDInfo = CFBridgingRelease(
CNCopyCurrentNetworkInfo((__bridge CFStringRef)interfaceName));
NSLog(@"%s: %@ => %@", __func__, interfaceName, SSIDInfo);
BOOL isNotEmpty = (SSIDInfo.count > 0);
if (isNotEmpty) {
break;
}
}
return SSIDInfo;
}
2)我建议您忘记尝试使用这些标准方法测试Wi-Fi,并且在尝试使用Wi-Fi之前,只需触发超过3秒的请求。如果您收到有效的回复,则表示您已连接,否则失败。