【问题标题】:iOS get current wlan network nameiOS 获取当前 wlan 网络名称
【发布时间】:2012-06-13 14:45:14
【问题描述】:

我正在寻找一种方法来获取iOS5的objective-c中当前连接的wlan网络的信息(至少是名称)。

我需要这个,因为我们目前正在开发一个不能在特定网络中运行的应用程序。在这个网络(在我们大学)中,我们需要连接到服务器的端口是关闭的。但是还有另一个网络可用,我们想告诉用户,如果他连接到上述网络,他必须切换网络。

我什至不知道从哪里开始。有没有人有想法或任何提示?

感谢和问候

【问题讨论】:

标签: iphone objective-c ios networking wifi


【解决方案1】:

从 iOS >= 4.1 可以获取设备当前连接的无线网络的 SSID。

为此,您将使用函数CNCopyCurrentNetworkInfo

有关实施的详细信息,请访问 SO:iPhone get SSID without private library

【讨论】:

  • 谢谢。我没想过要搜索“SSID”...完美!
  • 这在 iOS 9.0 中已被弃用。有新方法吗?
  • 我没有尝试过,但似乎合法:将您的应用注册为热点助手:stackoverflow.com/a/31590787/653513
  • @OhadM:您链接的答案也使用了已弃用的框架。但在同一个“线程”上还有另一个答案:stackoverflow.com/a/33132529/653513
  • @rokjarc 我已经测试过了,但它不起作用。它需要 Apple 的权利。请测试代码片段,你会看到。另外,你是对的,它已被弃用但仍然有效。
【解决方案2】:

可以从 Captive Network 获取当前的 wifi 信息。过去,苹果实际上禁用了一段时间,但由于强烈要求,他们似乎重新启用了它。他们也有可能决定在未来关闭它。

我们能得到的信息是BSSIDSSIDSSIDDATABSSID 是 wifi 的唯一地址,SSID 是当前 wifi 名称,SSIDDATASSID 的十六进制表示。

对于 Swift 3.1:

func printCurrentWifiInfo() {
  if let interface = CNCopySupportedInterfaces() {
    for i in 0..<CFArrayGetCount(interface) {
      let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interface, i)
      let rec = unsafeBitCast(interfaceName, to: AnyObject.self)
      if let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString), let interfaceData = unsafeInterfaceData as? [String : AnyObject] {
        // connected wifi
        print("BSSID: \(interfaceData["BSSID"]), SSID: \(interfaceData["SSID"]), SSIDDATA: \(interfaceData["SSIDDATA"])")
      } else {
        // not connected wifi
      }
    }
  }
}

对于 Objective-C

NSArray *interFaceNames = (__bridge_transfer id)CNCopySupportedInterfaces();

for (NSString *name in interFaceNames) {
  NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)name);

  NSLog[@"wifi info: bssid: %@, ssid:%@, ssidData: %@", info[@"BSSID"], info[@"SSID"], info[@"SSIDDATA"]];
}

【讨论】:

    【解决方案3】:

    从 iOS 12 开始,您需要在功能中允许 Wifi 信息访问。

    来自Apple

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多