16

我使用NEHotspotConfigurationManagerwith oniOS 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 本身的一个错误,重启设备可能会有所帮助。目前更新后一切正常。

4

8 回答 8

10

目前,只有重新启动设备才能解决问题一段时间,然后再次发生。

完整日志: 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)
}

但是问题还是出现了...

于 2017-12-12T09:46:04.757 回答
3

如果您仍然遇到这种情况。确保将 HotSpot Capability 添加到您正在使用的 AppID,还将其添加到 Xcode Target Capabilities 配置选项卡中,并确保链接 NetworkExtensions.framework。

Xcode 目标功能选项卡

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

于 2018-02-23T14:41:02.220 回答
2

我有这个内部错误问题(在 iOS 12.0 上),重现步骤如下。

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

会出现2个问题。

  1. applyConfiguration不会调用调用的完成处理程序
  2. 之后的每一次NEHotspotConfiguration applyConfiguration呼叫尝试都失败internal error了。

可悲的是,我们发现解决此问题的方法是按照先前答案的建议重新启动设备。只是为开发人员提供另一个原因,让他们陷入这个问题并且不知道这可能是什么原因。

于 2018-12-13T11:44:10.270 回答
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。

于 2019-02-19T17:32:12.187 回答
0

我有完全相同的问题。我什至尝试过关闭和打开热点设备wifi(但当然,鉴于这是一个“内部错误”,这似乎是iOS本身而不是设备)。

使用调试器运行时会出现这种情况吗?对我来说,我注意到我已将 iPhone 设置为与 Xcode 的网络连接(设备窗口 > “通过网络连接”已选中)。关闭它似乎使问题消失了。

我会保持这个 SO 页面打开,以防它回来,我必须更深入地挖掘

于 2017-12-19T21:07:36.300 回答
0

我有相同的问题。我尝试连接已连接的 Wifi,它显示“已关联”,否则将显示“内部错误”。我已经检查了我的“通过网络连接”未选中。

重新启动我的手机实际上对我有用。有时它显示“无法连接”,但重新启动后它工作正常。

于 2018-02-23T06:51:22.510 回答
0

在我的情况下,只有当我在 iOS 模拟器(不支持热点功能)上尝试此代码时才会发生这种情况。

于 2019-02-21T14:40:00.673 回答
0

另一种情况是,如果您尝试连接到设备上已连接的同一个 SSID。

于 2021-11-04T18:58:13.720 回答