特定のWi-Fiスポットに接続して切断するためにiOS 11 iPhone
でNEHotspotConfigurationManager
を使用しています。
これがコードです:
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構成を適用するたびに、特定のネットワークに接続するようにユーザーに促す警告が表示されましたが、何も表示されず、completerHanlderでこのエラーを受け取りました。
NEHotspotConfigurationErrorDomain Code=8 "internal error."
コードの後半で削除構成を使用していますが、同様に機能しないようです。
[[NEHotspotConfigurationManager sharedManager] removeConfigurationForSSID:self.specififcWiFiSSID];
質問は何ですか?停止したのはなぜWiFiネットワークに参加するように促し、このエラーはどういう意味ですか?
更新:iOS自体のバグのようです。デバイスを再起動すると問題が解決する可能性があります。現在アップデート後はすべて動作します。
現時点では、デバイスを再起動するだけでしばらくの間問題が解決し、その後再び発生します。
完全なログ:_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)
}
_
しかし、問題はまだ起こります...
この内部エラーの問題(iOS 12.0)があり、再現手順は次のとおりです。
NEHotspotConfiguration applyConfiguration
APIを使用して、WIFIネットワークに接続するようユーザーに促すアラートを表示します2つの問題が発生します。
applyConfiguration
呼び出しの完了ハンドラーは呼び出されませんNEHotspotConfiguration applyConfiguration
呼び出しのすべての試行は、その後internal error
で失敗します。残念なことに、これを修正する方法は、以前の回答で提案されているようにデバイスを再起動することです。開発者がこの問題で立ち往生していて、これの原因が何であるかわからない別の理由を提供するためだけです。
同じ問題がありました。今、私は次のロジックを使用します:呼び出す前に
[[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で動作します。
同じ問題が発生しています。既に接続されているWi-Fiに接続しようとすると、「関連付けられています」と表示されます。それ以外の場合は、「内部エラー」と表示されます。 [ネットワーク経由で接続する]がオフになっていることを確認しました。
私の電話を再起動することは実際に私のために働きます。 「接続できません」と表示されることもありますが、再起動後は正常に動作します。
私の場合、これはiOSシミュレータでこのコードを試した場合にのみ起こります(ホットスポット機能をサポートしていません)。
私はまったく同じ問題を抱えています。ホットスポットデバイスのwifiの電源をオフにしてからオンにしてみました(もちろん、「内部エラー」が発生した場合、これはデバイスではなくiOS自体にあるように見えます)。
デバッガーで実行しているときに表示されますか? Xcodeへのネットワーク接続用にiPhoneをセットアップしたままにしていたことに気付きました([デバイス]ウィンドウ> [ネットワーク経由で接続]をオンにした)。これをオフにすると、問題が解消されるようです。
これが戻ってきて、さらに深く掘り下げなければならない場合に備えて、このSOページを開いたままにしておきます。