以编程方式连接WPA2 Enterprise wifi

时间:2018-03-10 05:54:34

标签: ios objective-c wifi connect

我正在尝试以编程方式使用iPhone应用程序连接wpa2企业wifi。

之前我尝试手动连接到该wifi:

  1. 来自iPhone设备的设置
  2. 使用这三个参数SSID,用户名,密码
  3. 之后,它要求信任证书并信任证书,wifi连接,完成!
  4. 现在我尝试使用以下代码以编程方式连接wifi:

    NEHotspotEAPSettings *settings = [[NEHotspotEAPSettings alloc]init];
    settings.password = self.password.text;
    settings.username = self.username.text;
    settings.supportedEAPTypes = [NSArray arrayWithObjects:[NSNumber numberWithInteger:NEHotspotConfigurationEAPTypeEAPPEAP], nil];
    NEHotspotConfiguration *configuration = [[NEHotspotConfiguration alloc]initWithSSID:self.ssid.text eapSettings:settings];
    [[NEHotspotConfigurationManager sharedManager]applyConfiguration:configuration completionHandler:^(NSError * _Nullable error) {
    if (error) { 
    NSLog(@"Error: %@",error.localizedDescription);
    } else {
    NSLog(@“Connected”);
    }
    }];
    

    ,但此代码出错

    无效的EAP设置: NEHotspotConfiguration EAP设置必须配置可信服务器证书或可信服务器名称

    由于我没有任何可信服务器证书或可信服务器名称。 我应该在NEHotspotEAPSettings的打击属性中设置什么(传递nil也给我同样的错误)

    settings.trustedServerNames 
    

    请帮忙解决这个问题。 谢谢!

    仅供参考:在Android应用程序正常工作,没有任何证书

1 个答案:

答案 0 :(得分:0)

在第3步手动连接时(当它要求信任证书时)打开"更多细节"并尝试找出"常用名称"证书。它通常看起来像您的公司域名,例如" wifi.example.com"。

然后用它初始化NEHotspotEAPSettings:

settings.trustedServerNames = @[ "wifi.example.com" ];

如果该证书未使用iOS上安装的知名信任根,则可能无法对其进行验证,那么您可能必须使用setTrustedServerCertificates方法(请参阅docs - https://developer.apple.com/documentation/networkextension/nehotspoteapsettings/2875740-settrustedservercertificates?language=objc