我在NEHotspotConfigurationManager
上使用iOS 11 iPhone
连接到特定的Wi-Fi广告位,然后与其断开连接。
以下是代码:
if (@available(iOS 11.0, *)) {
NEHotspotConfiguration *configuration = [[NEHotspotConfiguration
alloc] initWithSSID:self.specififcWiFiSSID passphrase:self.specififcWiFiPassword isWEP:NO];
configuration.joinOnce = YES;
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:^(NSError * _Nullable error) {
NSLog(@"Error : %@",error.description);
}];
} else {
[Router showOfflineMessage:message];
}
我使用了 applyConfiguration ,一切都很好,每次我想应用WiFi配置时,会出现提示用户连接特定网络的警报,但现在没有任何内容出现,我在completionHanlder中收到此错误:
NEHotspotConfigurationErrorDomain Code=8 "internal error."
我稍后在代码中使用删除配置,但它似乎不起作用:
[[NEHotspotConfigurationManager sharedManager] removeConfigurationForSSID:self.specififcWiFiSSID];
问题是:发生了什么?为什么它停止提示我加入WiFi网络,这个错误意味着什么?
更新:似乎这是iOS本身的一个错误,重启设备可以提供帮助。目前更新后的所有工作。
答案 0 :(得分:8)
目前,只有重新启动设备才能解决问题一段时间,然后再次发生。
完整日志:
Domain=NEHotspotConfigurationErrorDomain Code=8 "internal error." UserInfo={NSLocalizedDescription=internal error.}
我每次打电话之前都试过调用NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: ssid)
:
let hotspot = NEHotspotConfiguration(ssid: ssid, passphrase: pwd, isWEP: false)
hotspot.joinOnce = true
NEHotspotConfigurationManager.shared.apply(hotspot) { (error) in
completionHandler?(error)
}
但问题仍然存在......
答案 1 :(得分:2)
我有此内部错误问题(在iOS 12.0上),再现步骤如下。
NEHotspotConfiguration applyConfiguration
API显示警报,提示用户连接到WIFI网络将会出现2个问题。
applyConfiguration
调用的完成处理程序将不会被调用NEHotspotConfiguration applyConfiguration
的呼叫都会失败,并随后发生internal error
。解决这个问题的不幸方法是按照先前答案的建议重新启动设备。只是为开发人员提供了解决此问题的另一个原因,却不知道可能是什么原因造成的。
答案 2 :(得分:1)
如果您还在体验这一点。确保将HotSpot Capability添加到您正在使用的AppID中,并将其添加到Xcode Target Capabilities配置选项卡中,并确保链接NetworkExtensions.framework。
这确实为我解决了这个问题。
答案 3 :(得分:1)
我有同样的问题。现在,我使用下一个逻辑: 通话前
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:^(NSError *error){ ... }
我检查是否早先应用了此配置,如果是,请删除它。
[[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler:^(NSArray<NSString *> * _Nonnull wifiList) {
if ([wifiList containsObject:ssidToConnect])
{
[[NEHotspotConfigurationManager sharedManager] removeConfigurationForSSID:containsObject:ssidToConnect];
}
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:^(NSError *error){
completion();
}}];
对我来说,它可以在iOS 12.1.4上运行。
答案 4 :(得分:0)
我遇到了完全相同的问题。我甚至试图关闭和打开热点设备wifi(当然,鉴于它是“内部错误”,这似乎是在iOS本身而不是设备)。
当您使用调试器运行时是否会出现这种情况?对我来说,我注意到我已经将我的iPhone设置为与Xcode的网络连接(设备窗口&gt;“通过网络连接”选中)。关闭这个似乎会让问题消失。
我会保持这个SO页面打开,以防它回来,我必须深入挖掘
答案 5 :(得分:0)
我遇到了同样的问题。我尝试连接已连接的Wifi,它显示“已经关联”,否则它将显示“内部错误”。我检查了我的“通过网络连接”未经检查。
重新启动手机实际上对我有用。有时它显示“无法连接”但重启后它工作正常。
答案 6 :(得分:0)
就我而言,仅当我在iOS Simulator(不支持热点功能)上尝试此代码时,这种情况才会发生。