首页 > 其他分享 >iOS应用内获取WiFi SSID

iOS应用内获取WiFi SSID

时间:2023-03-26 15:24:30浏览次数:34  
标签:info WIFI SSID WiFi iOS 获取 manager

https://www.jianshu.com/p/0135e7db5a69

 

iOS如何在应用中连接WIFI

1、打开Hotspot Configuration权限。
2、在info.plist中添加"Required background modes",在item0赋值为"network-authentication"。注意,当添加完成后,App会打开"Background Modes"能力。
3、导入头文件"#import <NetworkExtension/NetworkExtension.h>"。
4、通过代码连接指定SSID的WIFI。

NEHotspotConfiguration* config = [[NEHotspotConfiguration alloc] initWithSSID:@"WIFI SSID" passphrase:@"WIFI 密码" isWEP:NO];
    
    NEHotspotConfigurationManager* manager = [NEHotspotConfigurationManager sharedManager];
    [manager applyConfiguration:config completionHandler:^(NSError * _Nullable error) {
        NSLog(@"%@",error);
    }];

如何在应用中获取已经连接的WIFI SSID

1、iOS14以上版本,获取当前系统已经连接的WiFi SSID可通过以下方法

NEHotspotConfigurationManager* manager = [NEHotspotConfigurationManager sharedManager];
[NEHotspotNetwork fetchCurrentWithCompletionHandler:^(NEHotspotNetwork * _Nullable currentNetwork) {
    NSLog(@"current :%@", currentNetwork.SSID);
    //打印结果:current :UKeeper-5G
}];

iOS14以下,可以使用以下方式获取当前连接的WiFi SSID

+ (NSString*)wifSsid{
    NSArray *interfaces = (__bridge_transfer NSArray*)CNCopySupportedInterfaces();
    NSDictionary *info = nil;
    for (NSString *ifname in interfaces) {
        info = (__bridge_transfer NSDictionary*)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);
        if (info && [info count]) {
            break;
        }
        info = nil;
    }
    
    NSString *ssid = nil;
    
    if ( info ){
        ssid = [info objectForKey:@"SSID"];
    }
    info = nil;
    return ssid? ssid:@"";
}

2、由于iOS12对获取WiFi做了限制,App需要打开”Access WiFi Infomation“权限后才能获取已经连接的WiFi SSID。注意:该权限只有付费帐号才能打开。
3、iOS13系统对WiFi SSID获取又进行了限制,需要开启定位服务后才能获取已经连接的WiFi SSID。打开定位权限如下:

<key>NSLocationAlwaysUsageDescription</key>
<string></string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string></string>
<key>NSLocationUsageDescription</key>
<string></string>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>

4、iOS14系统及以上,需要开启精准定位服务后才能获取已经连接的WiFi SSID。获取精准定位的方法如下:

self.manager = [[CLLocationManager alloc] init];
BOOL isFullAccuracy = (self.manager.accuracyAuthorization == CLAccuracyAuthorizationFullAccuracy);
if(!isFullAccuracy){
    [self.manager requestTemporaryFullAccuracyAuthorizationWithPurposeKey:@"WantsToGetWiFiSSID"];
}
    1人点赞   随笔    

作者:卡布奇诺_95d2
链接:https://www.jianshu.com/p/0135e7db5a69
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:info,WIFI,SSID,WiFi,iOS,获取,manager
From: https://www.cnblogs.com/itlover2013/p/17258736.html

相关文章

  • postman抓包之移动端(安卓和iOS)
    Postman抓包移动端1、上篇讲了使用postman抓包浏览器数据,本篇将下使用postman抓包手机端的数据请求方法;2、好了,废话不多说进入正题:就是自己开始捣鼓时,也是现在网上搜......
  • vue-axios
    Axios常用请求方式getpostdeleteputpatchheadrequestall:发送多个请求,返回一个数组axios.all([])常用配置选项urlmethodbaseURL:......
  • axios与fetch
    axiosaxios是什么axios是一个基于PRominse的HTTP库,可以用在浏览器和node.js中第三方Ajax库http://www.axios-js.com/zh-cn/docs/ a......
  • 基于vue框架axios网络请求封装
    原因axios是网络请求的第三库,为了防止降低对第三库的依赖性,所以将axios请求封装为函数,方便后期代码的维护安装npminstallaxios封装在目录结构src文件夹下创建n......
  • Axios学习(一)axios中post的body与query传参区别及使用总结
    踩坑描述最近在vue项目开发中遇到了一个axios请求方面的问题,post请求传单个参数的时候,按照post请求方式传参但是接口报错,在swagger上面测试后发现接口是没有问题的。踩坑......
  • 使用Cordova打包Vue项目为IOS并使用XCode提交到AppStore
    打包Vue项目1.在Webstorm中打开Vue项目,在下面的Terminal中输入:npmrunbuild2.等待build完成,双击项目,进入菜单选择RevealinFinder,打开项目的真实目录3.找到dist目录,进入4......
  • MobPush iOS SDK API
    概述MobPush注册推送,获取推送id等方法均可在SDK的"MobPush.h"中进行查看,也可以下载MobPush的Demo进行参考。推送环境设置(setAPNsForProduction)/**@paramisProduction是......
  • vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex
    阅读目录Vue如何封装Axios请求1安装axios2封装代码axios应用方式Vue中的路由守卫使用演示1全局守卫2组件级守卫3单个路由独享的守卫4官网整个路由守卫被触发流程的......
  • Wifi6 and Wifi7 Module
    Wi-Fi6offerssignificantimprovementsoverpreviousWi-Fistandardssuchasfasterspeeds,betternetworkefficiency,andimprovedperformanceincrowdedenvi......
  • javaweb——使用axios和vue改造书城项目的购物车
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接视频链接代码示例index......