从iOS应用程序中访问捕获式门户配置的Wifi

从iOS应用程序中访问捕获式门户配置的Wifi,ios,objective-c,swift,captivenetwork,nehotspothelper,Ios,Objective C,Swift,Captivenetwork,Nehotspothelper,我正在开发此应用程序,该应用程序已使用NEHotspotConfigurationManager成功实现连接到Wifi网络,代码如下 - (void)joinWifiWithCredentials:(NSString * const)SSID passphrase:(NSString * const)passphrase completion:(void (^)(CMNNetworkWifiState, NSError * _Nullable))completion { NEHotspo

我正在开发此应用程序,该应用程序已使用NEHotspotConfigurationManager成功实现连接到Wifi网络,代码如下

- (void)joinWifiWithCredentials:(NSString * const)SSID passphrase:(NSString * const)passphrase completion:(void (^)(CMNNetworkWifiState, NSError * _Nullable))completion {
    NEHotspotConfiguration *configuration = [[NEHotspotConfiguration alloc] initWithSSID:SSID passphrase:passphrase isWEP:NO];
    configuration.joinOnce = NO;

    [[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:^(NSError * _Nullable error) {
        [self onFinishedJoiningWifi:SSID error:error completion:completion];
    }];
}
这在需要SSID/密码对才能访问的Wifi上非常有效

但它不适用于位于受控门户后面的网络。我被指向[NehostThelper registerWithOptions]的方向,以便能够连接到捕获门户,但没有HotstThelper权限

我想知道这是否是做这件事的唯一方法

本质上,我希望能够从应用程序中触发相同的行为,就像我试图从iOS设置或Safari连接到Wifi一样。当我点击“连接到Wifi”按钮时,理想情况下,它会尝试连接并触发captive.apple.com门户页面,在返回应用程序之前,我可以继续登录并连接到Wifi

我能得到一些关于如何最好地进行的建议/指点吗


非常感谢您的回复。

如果您想注册应用程序,以便在用户连接到某个特定热点时自动对其进行身份验证,您需要热点助手权限。如果您刚刚将用户连接到一个特定的WiFi网络,您知道该网络有一个专属门户,并且您的应用程序仍在前台,那么您只需连接到该门户并使用
NSURLSession
完成任何所需的登录,我不确定这是否与此有关,但在info.plist中将UIRequiresPersistentWiFi设置为true后,我开始看到捕获门户。可以肯定的是,这只能通过使用NEHotspotConfiguration而不是NEHotspotHelper实现。如果您想注册应用程序,以便在用户连接到某个特定热点时自动对其进行身份验证,则需要“热点助手”权限。如果您刚刚将用户连接到一个特定的WiFi网络,您知道该网络有一个专属门户,并且您的应用程序仍在前台,那么您只需连接到该门户并使用
NSURLSession
完成任何所需的登录,我不确定这是否与此有关,但在info.plist中将UIRequiresPersistentWiFi设置为true后,我开始看到捕获门户。可以肯定的是,这只能通过使用NEHotspotConfiguration而不是NEHotspotHelper实现。