AppleはiOS 13でWiFiに関するいくつかの点を変更しました。CNCopyCurrentNetworkInfoを使用したい場合、アプリは次のいずれかを持っている必要があります
出典:WWDC 19セッション713
NEHotspotConfigurationを使用してネットワークを構成していますが、現在のSSIDを取得できなくなっています。
次のコードはiOS 12で正常に動作しました。
/// retrieve the current SSID from a connected Wifi network
private func retrieveCurrentSSID() -> String? {
let interfaces = CNCopySupportedInterfaces() as? [String]
let interface = interfaces?
.compactMap { [weak self] in self?.retrieveInterfaceInfo(from: $0) }
.first
return interface
}
/// Retrieve information about a specific network interface
private func retrieveInterfaceInfo(from interface: String) -> String? {
guard let interfaceInfo = CNCopyCurrentNetworkInfo(interface as CFString) as? [String: AnyObject],
let ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
else {
return nil
}
return ssid
}
IOS 13では、CNCopyCurrentNetworkInfo
は常にnilを返します。
アプリにWiFi情報へのアクセス機能が設定されています。
ご協力いただきありがとうございます!
ばかげているようですが、一部のデバイスでは、障害のあるデバイスを再起動するとすべて修正されます(同じコードが更新前に機能した場合...)
以下も参照してください:
私にとって、TryCopyCurrentNetworkInfoは、NEHotspotConfigurationで構成されたネットワークであっても常にnilを返します。 JoinOneオプションをfalseまたはtrueに設定してMateuszの推奨事項を試しましたが、問題は解決しませんでした。
電話OSは13.1.3プロフィールでWiFi情報へのアクセスが有効になっていますiOS 12で動作していました
IOS 13.0でも同じ問題が発生しましたが、Apple修正済み)のようです。ドキュメントで、アプリによって追加されたネットワークであるか、その場所が有効になっているか、アプリがアクティブVPNが13.1 13.1 13.2で機能しなかった
場所のアクセス許可のステータスや、アプリがデバイスが現在使用している現在のWi-Fiネットワークを構成しているという事実に関係なく、iOS 13でCNCopyCurrentNetworkInfo
を機能させて結果を出さないようにする方法を理解するために何時間も費やしてきましたNEHotspotConfiguration
経由。それはただ機能しないです。
NEHotspotConfigurationManager
のgetConfiguredSSIDsWithCompletionHandler:
メソッドを介してSSIDを取得するための信頼できるソリューションがついに出ました。
以下に簡単な例を示します。
static func retrieveCurrentSSID( callback: @escaping ( String? ) -> Void ){
NEHotspotConfigurationManager.shared.getConfiguredSSIDs { ( networkSSIDs ) in
callback( networkSSIDs.first )
}
}
確認する必要があります
<key>com.Apple.developer.networking.wifi-info</key>
<true/>
Entitlements-Release.plistに追加され、ほとんどがEntitlements-Debug.plistにのみ追加されます
IOS 13以降、CNCopyCurrentNetworkInfo APIは有効なWi-Fi SSIDおよびBSSID情報を返さなくなりました。代わりに、デフォルトで返される情報は次のようになります。
SSID:「Wi-Fi」または「WLAN」(「SLANの場合は「WLAN」が返されます)BSSID:「00:00:00:00:00:00」
アプリがこのAPIを使用している場合、Appleは、Wi-Fiまたはネットワーク情報を必要としない代替アプローチを採用することをお勧めします。CNCopyCurrentNetworkInfoからの有効なSSIDおよびBSSID情報は引き続きVPNに提供されますアプリ、NEHotspotConfigurationを使用して現在のWi-Fiネットワークを構成したアプリ、および位置情報サービスを通じてユーザーの位置情報にアクセスするためのアクセス許可を取得したアプリ。
最新のiOS 13ベータ版でアプリをテストして、正しく動作することを確認できます。アプリが機能するために有効なWi-Fi SSIDおよびBSSID情報を必要とする場合は、次のことを実行できます。 。他の種類のアプリの場合は、CoreLocation APIを使用して、位置情報へのアクセスにユーザーの同意を要求します。