ios实现wifi搜索连接_Wifi 定位原理及 iOS Wifi 列表获取

本文介绍了Wifi定位原理,利用BSSID和信号强度进行定位,并探讨了iOS 9之后获取Wifi列表的权限申请和实现步骤,包括配置Info.plist、entitlements以及代码实现。
摘要由CSDN通过智能技术生成

Wifi 定位原理及 iOS Wifi 列表获取

对于大家来说,Wifi 应该是一个很熟悉的词了,我们每天都可能在使用 Wifi 热点。Wifi 除了能给我们提供热点之外同时还有定位的作用, 现在移动设备的对用户的隐私保护是越来越严格了,就如定位功能,必须要经过设备用户的授权才能使用 Location 给这台设备定位。这些严格的隐私政策对用户起到到保护作用,但对开发人员却是一种阻碍,在产品强需求的情况下用户是会授权的,如地图类应用,但是另外一些没有对定位强需求的产品,用户可能就不会给你授权了,这是我们可以考虑下 Wifi 定位了。

Wifi 定位原理

当我们使用手机扫面 Wifi 的时候,其实就可以定位到这台手机的位置信息了。每个 Wifi 路由开启后,都会不停的往四周发射信号,我们把 Wifi 路由想象成太阳以某种频度不停的往周围发射电磁波,电磁波会因距离的削弱,同时也会因为物体阻挡而削弱。例子就是我们在离 Wifi 路由器同样远的位置,有些地方信号强度高有些地方信号强度低。路由同时也叫 Wifi 热点(或者 Wifi AP:Access Point)。每一个 Wifi 路由器都会有一个 BSSID,很多人都管这个 BSSID 叫 MAC 地址(其实 BSSID 并不是 MAC 地址),BSSID 设定了一般就不会在变也不会重复,也就意味着是全球唯一的,这是路由制造的规则,既然有规则那么就会有不遵守规则的人,文章结尾会介绍不遵守规则的人是如何害人害己的。

刚才提到的 BSSID,在 Wifi 路由器的发射中是可以检测到的,同时 Wifi 路由信号还伴随着,SSID(路由器的名称:如XX的Wifi)、signalStrength(手机接收到W

iOS获取附近的Wi-Fi网络列表通常涉及到使用CoreLocation框架下的CLlocationManager类,以及Wi-Fi框架下的CNCentralManager类。以下是实现这个功能的基本步骤: 1. **导入必要的框架**: ```swift import CoreLocation import CoreWLAN ``` 2. **设置权限**: 首先需要在Info.plist文件中添加NSLocationWhenInUseUsageDescription key,告知用户为何需要位置权限。 3. **创建CLLocationManager实例**: ```swift let locationManager = CLLocationManager() ``` 4. **请求位置授权**: ```swift locationManager.requestWhenInUseAuthorization() ``` 5. **开启Wi-Fi扫描**: ```swift let centralManager = CBCentralManager(delegate: self, queue: nil) centralManager.scanForPeripherals(withServices: [.wlanService], options: nil) ``` 这里设置CBCentralManager来扫描周边的Wi-Fi设备。 6. **实现CBCentralManagerDelegate方法**: - `centralManager(_:didDiscover:)`会在发现新的Wi-Fi网络时被调用,传递包含SSID、RSSI等信息的CBPeripheral对象。 ```swift func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) { guard let ssid =advertisementData["kCBAdvDataLocalName"] as? String else { return } // 这里的ssid就是你获取到的Wi-Fi名称,可以进一步处理 } ``` 7. **停止扫描**: 当不需要再监听时,调用`centralManager.stopScan()`。 注意:获取Wi-Fi列表并不是CoreLocation的主要职责,它主要用于定位服务,所以如果只需要Wi-Fi信息,直接使用CNCentralManager会更合适。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值