ios13无法获取wifi名(SSID)(亲测有效)
ios13之前获取怎样获取wifi名
iOS 怎样获取wifi名(无法获取wifi名)(亲测有效)
ios13后
升级到iOS13以后,发现之前获取WiFi名称的接口失效了,返回的都是固定值"WLAN"。这里可能是因为苹果对用户隐私保护问题,因为通过wifi信息可以定位到用户地理位置。所以iOS13以后如果想要继续获取WiFi名称,需要在调用接口前判断用户是否同意app使用地理位置信息。
1.添加定位库
2.在Info.plist文件中配置,我把关于定位的4个都配上了
3.在控制中引入头文件,遵守代理
4.实现代理弹出框获取用户的定位授权
#pragma mark - 定位授权代理方法
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {if (status == kCLAuthorizationStatusAuthorizedWhenInUse ||status == kCLAuthorizationStatusAuthorizedAlways) {//再重新获取ssid[self getSSID];}
}- (void)getLocation
{if (!self.locManager) {self.locManager = [[CLLocationManager alloc] init];}if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {//这句代码会在app的设置中开启位置授权的选项,只有用户选择了允许一次,下次用户调用这个方法才会弹出询问框,选择不允许或是使用期间允许,下次调用这个方法都不会弹出询问框[self.locManager requestAlwaysAuthorization];}self.locManager.delegate = self;//如果用户第一次拒绝了,弹出提示框,跳到设置界面,要用户打开位置权限//如果用户跳到设置界面选择了下次询问,再回到app,[CLLocationManager authorizationStatus]的值会是nil,所以要||后面的判断if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied || ![CLLocationManager authorizationStatus]) {[self alertMy];}
}- (void)alertMy{//1.创建UIAlertControlerUIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"app需要获取您的位置权限,以获取wifi信息,给机器人配网" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *conform = [UIAlertAction actionWithTitle:@"设置" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {//使用下面接口可以打开当前应用的设置页面[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];NSLog(@"点击了确认按钮");}];//2.2 取消按钮UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {NSLog(@"点击了取消按钮");}];//3.将动作按钮 添加到控制器中[alert addAction:conform];[alert addAction:cancel];//4.显示弹框[self presentViewController:alert animated:YES completion:nil];
}
4.获取wifi信息
- (void)getSSID{ssidStr = [JMAirKissShareTools fetchSSIDInfo][@"SSID"];if ([StringHelper isNilOrEmpty:ssidStr]) {[self showHint:@"请加入Wi-Fi网络后搜索"];ssidStr = @"未连接到WiFi";}_wifiLab.text = ssidStr;}
#import "JMAirKissShareTools.h"#import <SystemConfiguration/SystemConfiguration.h>
#import <SystemConfiguration/CaptiveNetwork.h>#include <inttypes.h>#define CRC8INIT 0x00
#define CRC8POLY 0x31 // = X^8+X^5+X^4+X^0@implementation JMAirKissShareTools
/*** 获取SSID信息** @return id*/
+ (id)fetchSSIDInfo {NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();id info = nil;for (NSString *ifnam in ifs) {info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);if (info && [info count]) {break;}}return info;
}@end
参考博客:
链接: 6.iOS13 获取不到WiFi ssid 的问题
链接: OC 源生获取当前位置经纬度
链接: 解决iOS13 无法获取WiFi名称(SSID)问题
ios13无法获取wifi名(SSID)(亲测有效)相关推荐
- iOS 怎样获取wifi名(无法获取wifi名)(亲测有效)
文章目录 1.代码实现 2.iOS12后要求在开发者网站的App ID Configuration和Xcode中打开wifi开关 3.ios13后要求用户授权开启定位权限,才能获取wifi名 1.代码 ...
- iOS中获取WiFi的SSID(CNCopySupportedInterfaces())
获取当前设备连接WiFi: ios5之前可以通过读取配置文件获取,ios5以后苹果修改wifi列表文件位置,只有root权限才可以读取. ios4:/System/Library/SystemConf ...
- iOS 升级到iOS13 无法获取WiFi名称(SSID)的问题
在升级到iOS13以后忽然发现无法获取WiFi名称(SSID),在iOS13以下我们可以通过下面的方法获取当前所连WiFi的名称等信息 //引入系统提供的官方库 #import <SystemC ...
- 用Python破解WiFi密码,亲测有效,简直不能太爽了
本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网. 现在我想wifi已经是不能离开我们的生活了吧,最少我是这么觉得,我在家,公司,以及出门基本上都要用到,不 ...
- Android获取WIFI的SSID的一些差异,有的带引号
原文地址:http://blog.csdn.net/a578855381/article/details/51579960 http://blog.sina.com.cn/s/blog_62f9876 ...
- linux修改网卡名(亲测有效)
1查看网卡ip addr 2cd /etc/sysconfig/network-scripts Ls查看 3mv ifcfg-eno16777736 ifcfg-eth0重命名,然后编辑 最后一行加入 ...
- 小程序破解WIFI密码,亲测有效
俗话说"小时偷针,大时偷鸡",来告诉我们从小要养成良好的行为习惯.但是自从走上程序员这条路以后,学习变得枯燥,明明很有时间,"却变得没有时间了",总之学习效率特 ...
- 如何免费获取IEEE论文,亲测有效,【分享给有需要的人】
之前想做去雾算法在果园对靶的应用,想要搜集一些资料,包括何凯明博士在IEEE收录的一篇去雾论文Single Image Haze Removal Using Dark Channel Prior-IE ...
- 博主教您如何免费获得斐讯K2—1200M千兆家用双频智能无线路由器wifi穿墙(亲测有效)...
前言 上个月3月3号的时候,同事推荐说买可以0元购买斐讯K2路由器,看办公室人员有几个买了,博主也半信半疑的尝试买了一个,试试看是不是真的能返还钱 截止今天,钱终于退回来了.所以才敢给大家推荐,顺便给 ...
最新文章
- Load和Initialize往死了问是一种怎样的体验?
- Flutter(一):用BottomNavigationBar实现常规的底部导航
- 4.1 MyEclipse中搭建Struts2开发环境
- 2005年中国之“至理名言”
- 一个功能非常全面的增强出口查找工具
- mysql batis传多个参数_Mybatis传多个参数(三种解决方案)
- mysql默认密码是多少_192.168.3.1默认登录密码是多少【详细介绍】
- python 类可以调用实例变量_Python实例方法、类方法、静态方法区别详解
- vc2010, fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt解决办法
- microsoft azure Media Services 媒体服务解决方案
- python pytorch tenser 索引 slice 切片
- 证券交易1-交易系统简介
- 来LAMP兄弟连的日子
- SpringMVC工作原理图
- 服务器inetpub是什么文件夹,处理inetpub文件夹在win10中的问题
- 系统级程序设计第一课内容——Linux系统与操作 2022.5.2
- 如何查看自己电脑的ip地址
- 加拿大曼尼托巴大学计算机专业几年,加拿大曼尼托巴大学专业
- Linux 命令随笔
- Flash 引导层 实现卫星绕地球旋转
热门文章
- uncompyle--pyc的逆向工程工具
- 选股公式关于尾盘内容选股公式最新的中线股票指标
- vim 常用复制剪切技巧
- 传智播客PHP笔记05-thinkphp框架-视图渲染、display,fetch,模板替换,模板变量的赋值与实现,系统变量,模板函数,模板运算符,foreach,if,比较标签,volist标签
- 数控计算机软件的确认表怎么做,[计算机软件及应用]单元3 数控编程基础.doc
- python中用于创建文件对象的是_Python内置函数________用来打开或创建文件并返回文件对象。...
- 2021辽宁省大学生程序设计竞赛
- 程序员2016年5月:走进VR开发世界
- 精益|什么是价值流图分析(VSM)?
- 浪潮和华为相比,到底差什么?