最近公司项目增加了一个需求,就是做一个类似于钉钉的打卡功能,通过判断员工手机所连接的wifi是不是公司内网从而判断员工是否在办公室内打卡,并且同归不同的权限,管理员是可以设置APP的WiFi mac地址的。刚开始拿到这个需求的时候就想,苹果公司对于个人隐私这一块要求这么严格,能拿到用户手机所连接WiFi列表么。。。。。。通过各种实验之后,果然 这是个坑啊。。。。。
刚开始写demo的时候,在网上查了很多资料,说是ios拿到WiFi名字的方法自从ios9出来以后就被苹果屏蔽,如果需要使用这个框架的方法需要向苹果申请资料!但是但是 其实苹果屏蔽的是属于NetworkExtension框架中的关于VPN开发的方法 如果仅仅手机使用简单的拿到WiFi的方法是可以不用申请的!
详见代码 以下代码是完全可用的
被拒的时候急的我呀。。。。 我刚开始也以为会影响开发进度之类的。。。。后来仔细研究以后发现网络消息也不可全信啊。。。。 为什么 请看下图
其实在第一张代码图片中我们可以看到如果要拿到WiFi 名字和WiFi 的 mac 地址我们只需要用到CNCopySupportedInterfaces CNCopyCurrentNetworkInfo 这两个大类 而在上图中(xcode8的class详情)我们可以看到这两个类没有常见的被画上红色横线 更没有红色字体提示该方法或该类目已经被替换不可使用的 而在xcode7中同样如此 不信大家可以试试 那么为什么网上几乎所有的帖子都说这个方法被屏蔽了呢 包括我之前在QQ群里问了很多人 都说需要向苹果申请权限 不然会被拒 我在想 之所以说这话的人应该是用了以下方法来获得WiFi名字 见下图
大家可以看到在上面这个方法里面是通过 NEHotspotHelper 这个类来拿到WiFi名字的 ,而这个类就是VPN开发的必要类,并且被禁止使用了!!!如下图: