gpt4 book ai didi

iOS:在 Testflight 上获取当前的 WiFi SSID 始终为零

转载 作者:行者123 更新时间:2023-12-03 17:10:19 24 4
gpt4 key购买 nike

下面是我用来获取当前 WiFi SSID 并将其显示在我的应用程序中的代码。
我将位置权限设置为始终,以及所需的 Privacy info.plist 值。我也有 Access WiFi Information功能添加到我的项目中。当我将应用程序从 Xcode 构建到我的 iPhone(不是模拟器)时,它工作正常,我可以看到我的 WiFi SSID。但是,当我通过 Testflight 分发应用程序时,它不再起作用,它什么也没有返回。

import SystemConfiguration.CaptiveNetwork

private func getWiFiSsid() -> String? {
var ssid: String?
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
break
}
}
}
return ssid
}
下面是我从 ipa 文件中解压缩的权利的屏幕截图,显示我确实设置了访问 WiFi 信息:
WiFi entitlement

最佳答案

CNCopyCurrentNetworkInfo已从 iOS 14 弃用 ( https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo ) 考虑迁移到 NEHotspotNetwork.fetchCurrent我们可以在用户授权的情况下使用此方法来访问精确位置,例如:

import CoreLocation
import NetworkExtension

var locationManager: CLLocationManager?

...

locationManager = CLLocationManager()
locationManager?.delegate = self
locationManager?.requestAlwaysAuthorization()

...

func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if status == .authorizedAlways || status == .authorizedWhenInUse {
NEHotspotNetwork.fetchCurrent { hotspotNetwork in
if let ssid = hotspotNetwork?.ssid {
print(ssid)
}
}
}
}
注意:您必须设置 Access WiFi Information在您的权利文件中选择"is", Privacy - Location Always and When In Use Usage DescriptionPrivacy - Location When In Use Usage Description在你的 Info.plist 中也是如此。

关于iOS:在 Testflight 上获取当前的 WiFi SSID 始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64610755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com