【问题标题】:SystemConfiguration.CaptiveNetwork doesn't work on iOS 12SystemConfiguration.CaptiveNetwork 在 iOS 12 上不起作用
【发布时间】:2018-11-18 22:42:12
【问题描述】:

我有一个功能可以检测用户的当前 SSID。不幸的是,这不再适用于 iOS 12。这意味着它只是跳过了 if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? { 部分。也许这只是一个错误,或者它已被弃用。我在 Apple Docs 上一无所获。 在较旧的 iOS 11、10 和 9 设备上,它运行良好。

这是我的代码:

func getWiFiSsid() -> 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


            }
        }
    }
    return ssid
}

【问题讨论】:

  • 顺便说一句 - 使用 if let 强制转换为可选项没有任何意义。并且不要在 Swift 中使用 NSArrayNSDictionary
  • 您是否在CNCopyCurrentNetworkInfo 的文档中看到了这个大注:“要在 iOS 12 及更高版本中使用此功能,请在 Xcode 中为您的应用启用添加 WiFi 信息功能。当您启用此功能,Xcode 会自动将 Add WiFi Information 权利添加到您的权利文件中,并将相应的功能添加到您的 App ID。"
  • @rmaddy 哦,好的,谢谢,我会调查一下
  • @rmaddy 现在我明白了
  • @VictorLobe 这解决了问题吗?

标签: ios swift ssid ios12


【解决方案1】:

要在 iOS 12 及更高版本中使用此功能,请在 Xcode 中为您的应用启用访问 WiFi 信息功能。当您启用此功能时,Xcode 会自动将 Access WiFi Information 权利添加到您的权利文件和 App ID。

https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo?language=objc

【讨论】:

  • 要启用访问 WiFi 信息功能,请转到项目设置 -> 选择您的应用目标 -> “功能”选项卡。有一个开关可以打开“访问WiFi信息”
  • 我没有在 Xcode 10 中列出的功能下看到这一点。有什么想法吗?
  • 请注意,要在设备上运行它,您需要启用此选项的 AppID 的配置文件,它不能是通配符 AppID。
  • 完成此操作后,我还必须转到开发者控制台并为我的 App ID 启用 访问 WiFi 信息。接下来我必须重新生成我的配置文件,因为它被标记为“无效”。在完成所有这些之后,我能够让它再次工作。
  • “无线配件配置”不是“访问 WiFi 信息”。不要设置错误的能力。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-23
  • 2022-11-15
  • 2018-12-23
  • 2020-10-27
  • 1970-01-01
相关资源
最近更新 更多