美文网首页
swift获取设备链接WiFi的名称

swift获取设备链接WiFi的名称

作者: 苍眸之宝宝 | 来源:发表于2020-03-03 16:05 被阅读0次

    1.获取WiFi名称的代码:

    private func getWiFiName() -> String? {
            guard let unwrappedCFArrayInterfaces = CNCopySupportedInterfaces() else {
    //            print("this must be a simulator, no interfaces found")
                return nil
            }
            guard let swiftInterfaces = (unwrappedCFArrayInterfaces as NSArray) as? [String] else {
    //            print("System error: did not come back as array of Strings")
                return nil
            }
            var wifiName: String?
            for interface in swiftInterfaces {
                print("Looking up SSID info for \(interface)") // en0
                guard let unwrappedCFDictionaryForInterface = CNCopyCurrentNetworkInfo(interface as CFString) else {
    //                print("System error: \(interface) has no information")
                    return nil
                }
                guard let SSIDDict = (unwrappedCFDictionaryForInterface as NSDictionary) as? [String: AnyObject] else {
    //                print("System error: interface information is not a string-keyed dictionary")
                    return nil
                }
                wifiName = (SSIDDict["SSID"] as? String)
            }
            return wifiName
        }
    

    2.在iOS12和iOS13以后的版本上述代码返回为nil:

    原因是iOS12以后的版本,需要额外设置权限信息,官网链接

    iOS13以后的版本,需要添加位置定位信息,用户同意使用后,才能获取wifi名称。

    3.设置权限步骤:

    3.1创建一个设置文件:

    文件代码内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>aps-environment</key>
        <string>development</string>
        <key>com.apple.developer.associated-domains</key>
        <array>
            <string>applinks:demoapi.anniekids.net</string>
        </array>
        <key>com.apple.developer.networking.wifi-info</key>
        <true/>
    </dict>
    </plist>
    
    image.png

    3.2在Xcode中设置加载上面创建文件:

    过程:Xcode->targent->Build Settings->Code Signing Entitlements->$(SRCROOT)/上述文件路径。
    例如我的路径:$(SRCROOT)/项目名称/Classes/AppDelegate/文件名称.plist。


    image.png

    4.设置定位权限

    4.1info.plist设置用户权限弹窗提示字符串

    9765503F-AF7B-4E73-84A3-346DF808F789.png

    4.2代码

    /// 定位权限
        static func checkLocation(isAlways: Bool, compelete: PermissionToolAuthorizeStatusCompelete?) {
            let status = self.getLocationStatus()
            if self.instence.locationManager == nil {
                self.instence.locationManager = CLLocationManager.init()
                self.instence.locationManager?.delegate = self.instence
            }
            switch status {
            case .none: do {
                self.instence.authorizeCompelete = compelete
                if isAlways {
                    self.instence.locationManager?.requestAlwaysAuthorization()
                }
                else {
                    self.instence.locationManager?.requestWhenInUseAuthorization()
                }
            }
            case .whenInUse: do {
                if isAlways {
                    self.instence.authorizeCompelete = compelete
                    self.instence.locationManager?.requestAlwaysAuthorization()
                }
                else {
                    compelete?(.authorized)
                }
            }
            case .always:
                compelete?(.authorized)
            case .denied:
                compelete?(.denied)
            }
        }
    

    相关文章

      网友评论

          本文标题:swift获取设备链接WiFi的名称

          本文链接:https://www.haomeiwen.com/subject/zeehlhtx.html