Thank you and I filed an enhancment request for my query, here is the bug number: FB7614453
Post
Replies
Boosts
Views
Activity
import Cocoa
import CoreWLAN
class Discovery {
var currentInterface: CWInterface
var interfacesNames: [String] = []
var networks: Set = []
// Failable init using default interface
init?() {
if let defaultInterface = CWWiFiClient.shared().interface(),
let name = defaultInterface.interfaceName {
self.currentInterface = defaultInterface
self.interfacesNames.append(name)
self.findNetworks()
} else {
return nil
}
}
// Init with the literal interface name, like "en1"
init(interfaceWithName name: String) {
self.currentInterface = CWInterface(interfaceName: name)
self.interfacesNames.append(name)
self.findNetworks()
}
// Fetch detectable WIFI networks
func findNetworks() {
do {
self.networks = try currentInterface.scanForNetworks(withSSID: nil)
} catch let error as NSError {
print("Error: \(error.localizedDescription)")
}
}
// Fetch current connected wifi network
func getCurrentConnectedWifiNetwork() -> [String: Any] {
var currentNetwork: [String: Any] = [:]
currentNetwork["ssid"] = currentInterface.ssid()
currentNetwork["security"] = currentInterface.security().rawValue
currentNetwork["channelNumber"] = currentInterface.wlanChannel()?.channelNumber
currentNetwork["IPAddress"] = getIPAddress(interfaceName: currentInterface.interfaceName!)
currentNetwork["rssi"] = currentInterface.rssiValue()
return currentNetwork
}I have created the "Discovery" class to get the connected wifi network details (SSID, Security, Channel Number, IPAddress, RSSI) and From viewController calling the below function.if let discoveryObject = Discovery() {
let currentConnectedWifi = discoveryObject.getCurrentConnectedWifiNetwork()
print("\nConnected wifi network: \n\n\(currentConnectedWifi)\n")
}The console log for the network "NETGEAR10" (not a guest wifi network)["channelNumber": 13, "IPAddress": "192.168.1.4", "security": 4, "ssid": "NETGEAR10", "rssi": -36]Now, created a guest wifi network name as "NETGEAR_Guest" and the details are,["rssi": -38, "channelNumber": 13, "ssid": "NETGEAR_Guest", "security": 4, "IPAddress": "192.168.1.4"]I need to know what exact metadata is available to identify the guest network in CoreWLAN andhelp is much needed. Thank you.
What do you mean by “guest network”?Let me tell you in detail, I have logged into a "Netgear" router (via router address 192.168.1.1) and Click on Guest network Enable guest network - Enable SSID Broadcast - Click on apply. Now, the network "NETGEAR_Guest" is created.I will connect my mac to "NETGEAR_Guest" .So I want to know the currently connected network is Guest network or other network. I tried with CoreWLAN framework but i don't see any parameter that defines the network type as i explained earlier.Is this possible? Please let me know.
Thanks for your response.It sounds like you are wanting to get the currently connected SSID instead of scanning for all the nearby networks. Is that correct?No. I am able to get the currently connected SSID and also scanned available networks.Question:We need to know whether "SSID" is of Guest Network.How to differentiate the guest network if connected?
Thanks for your time.
I have one usecase to implement in such a way that i can intimate/alert the user in case of network changes (Wifi/Cellular). Let me know if any other solutions are there to achieve this.Thanks for your suggestions. You saved my time.
I appreciate your reply Meaton.Yes, NWPathMonitor delegates whenver the network status changes and it works in iOS.I have created a Cocoa(macOS) application and using NWPathMonitor, is it possible to get to know when MacBook Air WiFi connected to my cellular network via hotspot enabled.My Cocoa app should identify whenever the network connected via Wi-Fi or via Celluar (hotspot enabled) network.let monitor = NWPathMonitor(requiredInterfaceType: .wifi)
let queue = DispatchQueue.global(qos: .background)
monitor.start(queue: queue)
monitor.pathUpdateHandler = { path in
if path.status == .satisfied {
print("Connected")
}
}if i change the requiredInterfaceType as ".cellular". am not getting the path.status as .satisfied. It always says interface type as .wifi even if i connected via cellular hotspot.