我认为您无法通过连接管理器进行测试。由于你所说的原因,结果总是不可靠的。
所以,在我看来,你有两个选择:
1)您像批准列表或其他东西一样测试Wi-Fi的SSID,如果用户不在该SSID上,您会提醒他们。
以下是获取当前连接路由器的 SSID 的方法(iOS 7+):
@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 秒的请求。如果你得到一个有效的响应,你就连接了,否则它就失败了。