We are having an issue with the Local Network permission pop-up not getting triggered for our apps that need to communicate with devices via local network interfaces/addresses.
As we understand, apps using UDP should trigger this, causing macOS to prompt for access, or, if denied, fail to connect. However, we are facing issues with macOS not prompting this popup at all.
Here are important and related points:
- Our application is packaged as a .app package and distributed independently (not on the App Store).
- The application controls hardware that we manufacture. In order to find the hardware on the network, we send a UDP broadcast with a message for our hardware on the local network, and the hardware responds with a message back.
- However, the popup (to ask for permission) never shows up. The application is not able to find the hardware device. It is interesting to note that data is still sent out to the network (without the popup) but we receive back the wrong data.
The behaviour is consistent macOS Sequoia (and above) with both Apple And Intel silicon.
Workarounds that have been tried:
- Manual Authorization: One solution suggested in various blogs was to go to "Settings → Privacy and Security-> Local network", find your application and grant access. However, the application never shows up in the list here.
- Firewall: No difference is seen in behaviour with firewall being ON OR OFF.
- Setting NSLocalNetworkUsageDescription: We have also tried setting the Info.plist adding the NSLocalNetworkUsageDescription with a meaningful string and updating the NSBonjourServices.
- Running Via terminal (WORKS): Running the application via terminal sees no issues. The application runs correctly and is able to send UDP and receive correct data (and find the devices on the network). But this is not an appropriate solution.
How can we get this bug/issue fixed in macOS Sequoia (and above)?
Are there any other solutions/workarounds that we can try on our end?
I have a customer on macOS 27
So we’re talking about macOS 27 beta here, right?
I do not have a repro myself.
Meaning that it works with macOS 27 beta in your environment, right?
Or that you haven’t actually tested with macOS 27 beta?
with my Store app
You mean your App Store app, right?
If so, that reduces the chances of one of the more common pitfalls, namely having multiple copies of the app installed. Users who install apps from the App Store typically have a single copy of the app installed in the /Applications.
A second cause of problems is the app not actually hitting the local network. I most commonly see this on iOS, where folks hard code en0 as the Wi-Fi interface, which is not something we guarantee. However, that’s just an example of there are a variety of ways for problems like this to arise regardless of the platform.
Given that you can’t reproduce this, what I recommend is that you add a system log point to your app at the point that it should trigger the local network check. Put this in its own subsystem and category, so it’s easy to find in the log. See Your Friend the System Log for more about that.
You can then send this user a version of your app with that log point (for an App Store app you’d typically use TestFlight for this). The user can then run Console and check that they see the expected log entry. If they don’t, you have some debugging to do on your side. If they do, then they user can trigger a sysdiagnose log (which will capture your log entry) and file a bug against the beta.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"