热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

浅谈关于如何检测iOS14本地网络权限的一些思路

这篇文章主要介绍了浅谈关于如何检测iOS14本地网络权限的一些思路,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前戏

苹果iOS 14针对本地局域做了一些权限限制,详情见链接:https://developer.apple.com/videos/play/wwdc2020/10110/

wwdc翻译过来凑字数的

什么是本地网络?

这里的本地网络其实就是我们常说的局域网,是将设备接入路由器以后形成的网络,设备可以通过这张网络互相通信,如我们的设备发现、设备绑定、局域网优先等功能都是使用的本地网络。

从 iOS 13 开始,应用想要获得当前连接到的 Wi-Fi 名称,那就必须要获得定位权限。因为通过识别 Wi-Fi 名称, 应用就能轻松地在你和周围的人之间建立大数据网络。但是不给定位权限不代表应用就没有办法跟踪你了,因为应用可以通过本地网络里的设备进行跟踪。

为什么需要向用户申请权限?

和iOS 13获取WiFi名称需要通过定位权限类似,苹果加强了对用户隐私安全权限,这里也是类似的问题。在过去的 iOS 版本中,应用可以随意扫描本地网络中的设备,因此应用就可以很轻松地得到本地网络里所有设备的名称和 MAC 地址。MAC 地址是一种确认网络设备位置的地址,每个网卡都有一个唯一的 MAC 地址,加上 MAC 地址也具有唯一性,设备厂商会按照一定的规律分配 MAC,所以不同的局域网都是独一无二可以识别的。比方说,你从线下渠道买了个新相机,拍完照片利用相机自带的 Wi-Fi 将照片导入到手机上。这时候带有某个推广模块的应用对局域网发起了一次扫描,识别到了一个新的设备,推广模块会将相机的 MAC 地址上传了云端,进行简单的识别对比以后,很容易知道这个 MAC 地址属于相机。这样带有推广模块的应用都会在画像里给你加上「相机用户」这样的标签,当你下次打开带有同一个推广模块的购物应用时,你就会看到推荐了一堆和相机有关的东西。

那些应用需要使用本地网络?

  • 利用本地网络进行设备发现
  • 利用本地网络进行数据传输
  • 网络调试工具

影响范围

主要影响无法使用Socket或者Bonjour做一些局域网的发现,数据传输。

对局域网应用如:智能家居类,局域网游戏,网络测试工具等等。本人测试了下其实也没有那么大,因为发现这个开关,App下次启动后可能不会生效,暂时未定位原因。

怎么解决?

相信很多人都很奇怪为什么不整个权限申请或状态查询的接口,在翻了一些资料后发现,居然真的没有。 链接:https://developer.apple.com/forums/tags/wwdc20-10110

很无奈!

大部分应用使用局域一般使用Socket或者Bonjour做一些局域的发现,数据传输。说在调用的时候会出现code:65 desc:no route to host。这是其实就是所谓的无本地网络权限。但是我在测试时发现有时候即使是关掉本地网络权限的开关,也能正常的使用UDP、TCP。简直不敢信!难道iOS 14也会想iOS 13一开始出来一样各种坑满天飞?

这里的思路是

  • 通过接口获取本机的IP地址
  • 使用(SimplePing)来ping手机的IP

整个流程的大概耗时在0.13-0.2秒之间,大部分在0.17秒左右。可能耗时还能接受。但是不知道某些路由器是否可以设置禁止ping。如果有那就炸裂了。 下面上简单的代码

- (void)viewDidLoad {
  [super viewDidLoad];
  // Do any additional setup after loading the view.
  NSDictionary *router = [LDSRouterInfo getRouterInfo];
  pinger = [[SimplePing alloc] initWithHostName:router[@"ip"]];
  pinger.delegate = self;
  [self->pinger start];
  
}
- (void)simplePing:(SimplePing *)pinger didStartWithAddress:(NSData *)address {
  if (timer) {
    return;
  }
  timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
  dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
  dispatch_source_set_event_handler(timer, ^{
    [pinger sendPingWithData:nil];
  });
  dispatch_resume(timer);
}

- (void)simplePing:(SimplePing *)pinger didSendPacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber {
  NSLog(@"可以使用局域网");
}

- (void)simplePing:(SimplePing *)pinger didFailToSendPacket:(NSData *)packet sequenceNumber:(uint16_t)sequenceNumber error:(NSError *)error {
  if (error.code == 65) {//no route to host
    NSLog(@"不可以使用局域网");
  }
}

友情提示

  • 调上面接口可以触发首次启动本地网络权限的系统弹窗
  • 不知道某些路由器是否可以设置禁止ping
  • 整理流程在iPhone 6sp耗时130-200毫秒之间。平均值在160毫秒左右
  • 上面代码未正式上线,本人也在测试中,请酌情使用。

demo

到此这篇关于浅谈关于如何检测iOS14本地网络权限的一些思路的文章就介绍到这了,更多相关检测iOS14本地网络权限内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了互联网思维中的三个段子,涵盖了餐饮行业、淘品牌和创业企业的案例。通过这些案例,探讨了互联网思维的九大分类和十九条法则。其中包括雕爷牛腩餐厅的成功经验,三只松鼠淘品牌的包装策略以及一家创业企业的销售额增长情况。这些案例展示了互联网思维在不同领域的应用和成功之道。 ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
  • 信息安全等级保护是指对国家秘密信息、法人和其他组织及公民的专有信息以及公开信息和存储、传输、处理这些信息的信息系统分等级实行安全保护,对信息系统中使用的信息安全产品实 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 缤果串口网络蓝牙调试助手的特点和下载链接
    本文介绍了缤果串口网络蓝牙调试助手的主要特点,包括支持常用的波特率、校验、数据位和停止位设置,以及以ASCII码或十六进制接收或发送数据或字符的功能。该助手还能任意设定自动发送周期,并能将接收数据保存成文本文件。同时,该软件支持网络UDP/TCP和蓝牙功能。最后,提供了腾讯微云和百度网盘的下载链接。 ... [详细]
  • win10电脑蓝屏代码0x000000a5无法进入系统解决方法详解
    许多用户在使用电脑的时候遇到蓝屏问题,重启无法进入系统。本文提供了解决方法:调整BIOS设置、禁用安全启动、重装系统等。如果以上方法都无法解决问题,需要重新安装一个系统。详细步骤请参考正文内容。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 介绍一款好用的内网穿透工具FRP
    本文介绍了一款好用的内网穿透工具FRP,它是一个使用Go语言开发的高性能的反向代理应用。FRP支持多种协议类型,并且可以根据域名进行路由转发。 ... [详细]
author-avatar
mobiledu2502896071
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有