【问题标题】:How to get all available wifi network name listings in iOS如何使用swift在iOS中获取所有可用的wifi网络名称列表
【发布时间】:2018-09-06 15:09:19
【问题描述】:

我有一个简单的问题,但我不知道如何实现。我需要创建一个应用程序,当用户单击某个网络 iphone 必须连接到该网络时,该应用程序可以获取所有可用 wifi 网络名称和信息的列表。我可以这样做吗?以及如何?

【问题讨论】:

标签: ios swift xcode9


【解决方案1】:

无法获取所有可用的 wifi 网络名称和信息。 但是只能获取您当前连接的网络的SSIDSSID 只是网络名称的技术术语)。

此类将仅显示您连接的 wifi 网络名称 -

    import UIKit
    import SystemConfiguration.CaptiveNetwork

    class ViewController: UIViewController {

        @IBOutlet weak var label: UILabel!

        override func viewDidLoad(){
            super.viewDidLoad()
            let ssid = self.getAllWiFiNameList()
            print("SSID: \(ssid)")
        }
        func getAllWiFiNameList() -> String? {
            var ssid: String?
            if let interfaces = CNCopySupportedInterfaces() as NSArray? {
            for interface in interfaces {
            if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
                        ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
                        break
                    }
                }
            }
            return ssid
        }
    }

OUTPUT-(我连接到的网络名称)

要对此进行测试,您需要将物理设备 (iPhone) 连接到您的电脑。

【讨论】:

  • 是的,我正在连接当前,但我想要所有可用网络列表
  • 你有任何例子如何做到这一点..我不知道如何使用它
  • 到目前为止我做了什么..我和你分享了。所有示例都将显示您连接的名称。不是 wifi 列表。您可以使用网络可达性来显示您的 iPhone 的设置页面 - 然后用户将决定在哪里连接(用户将在那里看到所有可用的 wifi 列表)。如果您觉得我的回答有帮助,您可以接受我的回答:)。谢谢
【解决方案2】:

通过一些研究,我发现:
在 iOS 中不可能扫描所有附近的 SSID。我们只能获取当前连接的 wifi SSID。 如果我们以某种方式对任何私有库执行此操作,App 将被 Apple 拒绝。 我想分享一些有用的链接 -

您可以通过这些方法获得连接的wifiSSID
Swift(3和4) -

import SystemConfiguration.CaptiveNetwork

func fetchSSIDInfo() -> String? {
        var ssid: String?
        if let interfaces = CNCopySupportedInterfaces() as NSArray? {
            for interface in interfaces {
                if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
                    ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
                    break
                }
            }
        }
        return ssid
    }

Objective-C -

#import <SystemConfiguration/CaptiveNetwork.h>

+(NSString*)fetchSSIDInfo {

    NSArray *ifs = (__bridge_transfer NSArray *)CNCopySupportedInterfaces();

    NSDictionary *info;

    for (NSString *ifnam in ifs) {

        info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);

        if (info && [info count]) {

            return [info objectForKey:@"SSID"];
            break;
        }
    }

    return @"No WiFi Available";
}

【讨论】:

  • 那么真的没有办法吗?扫描所有附近的 SSID ??。我们只能获取当前连接的 wifi SSID ??在 iOS 中?
【解决方案3】:

是的,有可能。您需要在https://developer.apple.com/contact/network-extension完成一份问卷调查,然后您可以使用NEHotspotHelper返回热点列表。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多