iOS开发 详细描述如何做一个 WiFi 项目
Posted iOSer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发 详细描述如何做一个 WiFi 项目相关的知识,希望对你有一定的参考价值。
一、WiFi的STA和AP模式是什么?
也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个AP。
站点(STA,Station)在无线局域网(WLAN,WirelessLocalAreaNetworks)中一般为客户端,可以是装有无线网卡的计算机,也可以是有WiFi模块的智能手机,可以是移动的,也可以是固定的。在无线环境中STA接入的过程包括:认证STA有没有权限和接入点(AP,AccessPoint)建立链路;STA能不能接入WLAN;以及STA接入WLAN网络之后,认证STA能不能访问网络的权限。
在STA和AP建立链路的过程中,当STA通过信标(Beacon)帧或探测响应(Proberesponse)帧扫描到可接入的服务集标识符(SSID,ServiceSetIdentifier)后,会根据已接收到的Beacon帧或Proberesponse帧的信号强度指示(RSSI,ReceivedSignalStrengthIndication)来选择合适的SSID进行接入。
二、iOS自动连接WiFi
1)权限配置
并且,在Build Phase -> link Binary With Libraries 中,也已经自动添加了NetworkExtension.framework。
2)加入WiFi
#import <NetworkExtension/NetworkExtension.h>
// 获取加入过的wifi列表
- (void)getJoinedWifiList{
if (@available(iOS 11.0, *)) {
[[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler:^(NSArray<NSString *> * array) {
if (array && array.count > 0) {
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"连接设备" message:@"请选择要连接的设备" preferredStyle:(UIAlertControllerStyleActionSheet)];
for (NSString * str in array) {
UIAlertAction *action = [UIAlertAction actionWithTitle:str style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
[self joinWifiWithSSID:str pwd:@"123456"];
}];
[alertC addAction:action];
}
UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleDestructive) handler:^(UIAlertAction * _Nonnull action) {
}];
[alertC addAction:cancel];
[self presentViewController:alertC animated:YES completion:nil];
}
}];
} else {
// Fallback on earlier versions
}
}
// 加入WiFi
- (void)joinWifiWithSSID:(NSString *)ssid pwd:(NSString *)pwd {
if (@available(iOS 11.0, *)) {
NEHotspotConfiguration *hotspotConfig = [[NEHotspotConfiguration alloc] initWithSSID:ssid passphrase:pwd isWEP:NO];
hotspotConfig.joinOnce = YES; // 默认是NO,会保留配置过的wifi,YES即是不保存
// 开始连接 (调用此方法后系统会自动弹窗确认)
[[NEHotspotConfigurationManager sharedManager] applyConfiguration:hotspotConfig completionHandler:^(NSError * _Nullable error) {
NSLog(@"%@",error);
if (error && error.code != 13 && error.code != 7) {
NSLog(@"连接失败");
}else if(error.code ==7){//error code = 7 :用户点击了弹框取消按钮
NSLog(@"用户点击了弹框取消按钮");
}else{// error code = 13 :已连接
NSLog(@"已连接");
}
}];
} else {
// Fallback on earlier versions
}
}
复制代码
相关参考
WiFi的STA和AP模式指什么?
iOS App无需跳转系统设置自动连接Wi-Fi
以上是关于iOS开发 详细描述如何做一个 WiFi 项目的主要内容,如果未能解决你的问题,请参考以下文章