Search code examples
iosobjective-cnetworkextension

NEHotspotConfigurationErrorDomain Code=8 "internal error."


I'm using NEHotspotConfigurationManager with on iOS 11 iPhone to connect to specific Wi-Fi spot and then disconnect from it.

Here is the code:

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];
        }

I used applyConfiguration and everything was fine, every time I want to apply WiFi configuration, an alert appears that prompts a user to connect specific network, but nothing appears now and I receiving this error in completionHanlder:

NEHotspotConfigurationErrorDomain Code=8 "internal error."

I'm using remove configuration later in code, but it seems not work as well:

[[NEHotspotConfigurationManager sharedManager] removeConfigurationForSSID:self.specififcWiFiSSID];

Question is: what happened? Why it stopped prompts me to join WiFi network, and also what does this error mean?

UPDATED : It seems it was a bug with iOS itself, restart device could help. Currently after updates all works.


Solution

  • For now, only a restart of the device fixes the issue for some time and then it happens again.

    Full log: Domain=NEHotspotConfigurationErrorDomain Code=8 "internal error." UserInfo={NSLocalizedDescription=internal error.}

    I've tried calling NEHotspotConfigurationManager.shared.removeConfiguration(forSSID: ssid) each time before calling:

    let hotspot = NEHotspotConfiguration(ssid: ssid, passphrase: pwd, isWEP: false)
    hotspot.joinOnce = true
    NEHotspotConfigurationManager.shared.apply(hotspot) { (error) in
        completionHandler?(error)
    }
    

    But the issue still happens...