First, according to FAQ-17, NECP use LC_UUID to identify the program.
That’s not what FAQ-17 is talking about. Let’s ignore macOS for the moment, and think about iOS. If LNP used LC_UUID
as the sole way to identify an app, then every update to your app would trigger a new LNP alert (because every update to your app has a different LC_UUID
). That’s clearly not the case.
Rather, on iOS LNP identifies your app by its bundle ID.
It’s not safe to identify code by its bundle ID on macOS. Typically macOS uses the designated requirement for this, as discussed in TN3127 Inside Code Signing: Requirements. However, I’ve not dug into this, so I can’t say for sure whether that’s how this works on macOS 15 (currently in beta).
The point of FAQ-17 is that if you have two iOS apps with different bundle IDs but the same LC_UUID
, LNP on iOS gets confused. That’s the exact opposite of what you’ve been testing.
Second, the sample code provided here is not working.
On iOS? Or on macOS?
AFAIK that code continues to work on iOS. And, as I called out at the top of the LNP-FAQ, the entire FAQ needs an update for macOS. Indeed, there’s an LNP-FAQ update folder sitting on my desktop right now (-:
I wonder which is correct behavior.
I’m pretty sure that I tested each operation in FAQ-2 when I wrote the FAQ. That was on iOS, of course.
Regardless, it’s clear that the FAQ-2 behaviour is the expected behaviour. If an app can send and receive broadcasts on the local network without triggering the local network privacy alert, that completely undermines the utility of LNP. So, if that’s what you’re seeing on macOS 15 beta, I encourage you to file a bug about it.
Please post your bug number, just for the record.
Don’t get me wrong, there are bugs aplenty here. The LNP-FAQ has not been updated for macOS, and that’s on me. But LNP has a long history of bugs on iOS, and I’m seeing a similar story on macOS [1]. It’s gonna take some time for this to all converge.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
[1] For example, one of the recent betas included a fix so that programs running as root don’t trigger LNP.