获取Wifi SSID(名称)的方法以及可能出现的问题

描述

本篇重点是描述获取wifi SSID过程中遇到的坑,以帮助遇到同样问题的人。


开发

首先先列一下获取SSID的代码:(swift代码)

/** 获取Wifi Ssid */
 public func getSsid() -> String? {
        if let interface : CFArray = CNCopySupportedInterfaces() {
            NSLog("\(interface)");
            for i in 0..<CFArrayGetCount(interface) {
                let interfaceName: UnsafeRawPointer = CFArrayGetValueAtIndex(interface, i);
                NSLog("\(interfaceName)");
                let rec = unsafeBitCast(interfaceName, to: AnyObject.self)
                if let unsafeInterfaceData = CNCopyCurrentNetworkInfo("\(rec)" as CFString), let interfaceData = unsafeInterfaceData as? [String : AnyObject] {
                    if let ssid =  interfaceData["SSID"] as? String {
                        return ssid
                    }
                }
            }
        }
        return nil;
    }

代码挺简单的,这样就直接可以获取到当前手机链接的wifi名称。

但是在iOS 12.0 + 之后,苹果官方增加了获取wifi的权限,具体说明可以查看 CNCopyCurrentNetworkInfo 的官方文档说明:

Important
To use this function in iOS 12 and later, enable the Access WiFi Information capability for your app in Xcode. When you enable this capability, Xcode automatically adds the Access WiFi Information entitlement to your entitlements file and App ID.

在iOS 12.0+之后,需要打开Access WiFi Information capability这个开关才能正确获取到 WiFi 信息。
打开开关的方式有两种:

( 1 )Xcode

这种方式最简单,Xcode -> Targets -> Capabilities,如下图所示,直接点击打开


Xcode操作方式

打开之后Xcode也会同步到AppID的设置

( 2 )Apple Developer(苹果开发者中心

操作步骤如下图:(用第一种方法(Xcode)操作的话,Xcode也会自动同步状态到开发者中心对应AppID的开关的)


Apple Developer操作方式

可能出现的问题

1、CNCopyCurrentNetworkInfo返回为NULL

解决方法:
(1)首先检查 AppID 的 Access WiFi Information 开关。
(2)如果是出现在用户使用App时出现的情况,而这种情况只出现在部分手机上(大部分手机能成功获取),那么有可能是这些手机iOS系统的 wifid 模块 crash 了(因为某种原因),这样会导致CNCopyCurrentNetworkInfo返回NULL。解决方法: Settings -> General(通用)-> reset(还原)-> Reset Network Settings(还原网络设置),还原之后手机系统就可以重启 wifid 模块,CNCopyCurrentNetworkInfo就能成功获取了,不过这样会导致用户手机需要重新输入密码连接WIFI。(解决方法原文

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容