web-dev-qa-db-fra.com

Comment rendre disponible la liste de tous les noms de réseaux wifi dans iOS avec swift

J'ai une question simple mais je ne sais pas comment mettre cela en œuvre. J'ai besoin de créer une application capable d'obtenir toute la liste des noms et des informations des réseaux wifi disponibles lorsque l'utilisateur clique sur un réseau iphone pour se connecter à ce réseau. Puis-je faire ceci? et comment ?

4
Akash

Il n'est pas possible d'obtenir tous les noms et informations des réseaux wifi disponibles. MAIS il est seulement possible d'obtenir la SSID (SSID est simplement le terme technique pour un nom de réseau) du réseau auquel vous êtes actuellement connecté.

Cette classe n'affichera que le nom du réseau wifi auquel vous êtes connecté -

    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- (nom du réseau auquel je suis connecté)

 enter image description here

Pour tester cela, vous avez besoin d'un périphérique physique (iPhone) connecté à votre ordinateur.

1
Md Rashed Pervez

Oui, c'est possible. Vous devez remplir un questionnaire à l'adresse https://developer.Apple.com/contact/network-extension , puis vous pouvez utiliser NEHotspotHelper pour renvoyer une liste de zones réactives.

0
Rajeev Udayan

En faisant des recherches, j'ai trouvé que:
Il n'est PAS possible sous iOS d'analyser tout le SSID à proximité. Nous ne pouvons obtenir que le SSID wifi actuellement connecté. Si nous le faisons avec n'importe quelle bibliothèque privée, App sera rejetée par Apple . Quelques liens utiles que je veux partager -

Vous pouvez vous connecter wifi SSID par ces méthodes:
Swift (3 et 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
    }

Objectif 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";
}
0
user7718859