NEHotspotConfigurationErrorDomain Code = 8“内部错误。”

时间:2017-11-01 17:38:24

标签: ios objective-c networkextension

我在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本身的一个错误,重启设备可以提供帮助。目前更新后的所有工作。

7 个答案:

答案 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上),再现步骤如下。

  1. 使用NEHotspotConfiguration applyConfiguration API显示警报,提示用户连接到WIFI网络
  2. 将警报保留3分钟以上,然后单击“连接”

将会出现2个问题。

  1. applyConfiguration调用的完成处理程序将不会被调用
  2. 每次NEHotspotConfiguration applyConfiguration的呼叫都会失败,并随后发生internal error

解决这个问题的不幸方法是按照先前答案的建议重新启动设备。只是为开发人员提供了解决此问题的另一个原因,却不知道可能是什么原因造成的。

答案 2 :(得分:1)

如果您还在体验这一点。确保将HotSpot Capability添加到您正在使用的AppID中,并将其添加到Xcode Target Capabilities配置选项卡中,并确保链接NetworkExtensions.framework。

Xcode Target Capabilities Tab

这确实为我解决了这个问题。

答案 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(不支持热点功能)上尝试此代码时,这种情况才会发生。