Wi-Fi SSID information missing from System Configuration Framework since macOS 14.4

I have a small application (already published to the Mac App Store) to monitor, and notify the user of some important state changes about thier computer. To display Wi-Fi informations, I listening on the "State:/Network/Interface/.*/AirPort" events of the System Configuration framework. Before 14.4, the returned dictionary had an "SSID_STR" property which was contained the connected network name, but from 14.4, if "SSID_STR" are presents, it's will be always an empty string ("").

My first idea was to put "NSLocationUsageDescription" into the Info.plist (and enable Location under App Sandbox in the Signing & Capabilities section) and try to request permission with the Core Locations requestWhenInUseAuthorization call, but even if i had the correct permission (.authorizedAlways), this will did not came to success.

There are any workaround or entitlement available to get back the access to this information?

Answered by DTS Engineer in 789687022

As you’re probably aware, Apple is in the process of locking down access to Wi-Fi information on macOS, requiring apps to have the Location privilege.

try to request permission with the Core Locations … this will did not came to success.

Right. The issue here is that the System Configuration framework dynamic store is a very generic API, so it’s hard to add fine-grained access control to it. Rather than do that, we simply removed the SSID from the dynamic store. Speaking personally, I’d forgotten it was even in there (-:

The path forward is to get this information using the Core WLAN framework. That framework has been updated to check for the Location privilege and return the information if your app has it.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Accepted Answer

As you’re probably aware, Apple is in the process of locking down access to Wi-Fi information on macOS, requiring apps to have the Location privilege.

try to request permission with the Core Locations … this will did not came to success.

Right. The issue here is that the System Configuration framework dynamic store is a very generic API, so it’s hard to add fine-grained access control to it. Rather than do that, we simply removed the SSID from the dynamic store. Speaking personally, I’d forgotten it was even in there (-:

The path forward is to get this information using the Core WLAN framework. That framework has been updated to check for the Location privilege and return the information if your app has it.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi,

Yepp, thats what was my workaround too. If i know there will be SSID information (ie. I found an empty "SSID_STR" or the event will be Wi-Fi related), I do the request for the missing information via CoreWLAN which will works when location permission are granted to my app.

Thanks for the clarification.

Wi-Fi SSID information missing from System Configuration Framework since macOS 14.4
 
 
Q