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 ?
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é)
Pour tester cela, vous avez besoin d'un périphérique physique (iPhone) connecté à votre ordinateur.
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.
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";
}