ios - 如何识别 iOS 应用程序是否连接到特定的 WiFi 网络?
问题描述
我正在开发一个 React Native 应用程序,以便在用户靠近办公室时自动打卡/下班。
我打算使用 WiFi 作为验证用户是否在该位置的方法。MAC地址应该是一个唯一且固定的标识符,可以验证用户是否在这里。
如果使用 SSID / wifi 网络名称,用户可以在家中更改他们的名称以匹配办公室名称。
从这里开始,似乎不再可行了? 如何以编程方式获取 iphone 的 MAC 地址
如果由于安全问题而无法从 iOS 中的应用程序获取 MAC 地址,有什么办法可以实现吗?要正确识别它连接到的特定 wifi 网络?
解决方案
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网络名称
推荐阅读
- python - 使用 numpy 和 opencv 在 python 中裁剪基于 3D 图像的 om 2D 蒙版
- flutter - 将文本文件作为文件打开后如何保存对文本文件所做的更改?
- typescript - deno 错误:TS2345 [错误]:类型参数
- python - 如何在 discord.py 中使用 API 调用?
- javascript - 检查密码是否属于用户客户端?
- c++ - 重新制作所有标志变量为真
- python - Python Websocket 2-Way 通信
- python - Td Ameritrade Api 为历史 API 调用返回空 json 响应
- laravel - 声明抽象或实现其余方法
- asp.net-core - 如何在 ASP.NET Core 3.0 Identity 中配置 Twitter 外部身份验证