首页 > 解决方案 > 如何识别 iOS 应用程序是否连接到特定的 WiFi 网络?

问题描述

我正在开发一个 React Native 应用程序,以便在用户靠近办公室时自动打卡/下班。

我打算使用 WiFi 作为验证用户是否在该位置的方法。MAC地址应该是一个唯一且固定的标识符,可以验证用户是否在这里。

如果使用 SSID / wifi 网络名称,用户可以在家中更改他们的名称以匹配办公室名称。

从这里开始,似乎不再可行了? 如何以编程方式获取 iphone 的 MAC 地址

如果由于安全问题而无法从 iOS 中的应用程序获取 MAC 地址,有什么办法可以实现吗?要正确识别它连接到的特定 wifi 网络?

标签: iosreact-native

解决方案


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
      }
    }
  }

PS我从iOS获取当前的wlan网络名称


推荐阅读