com.apple.developer.networking.multicast entitlement doesn't work for broadcast?

According to the documentation, this entitlement is supposed to allow for custom multicast and broadcast protocols (from https://developer.apple.com/news/?id=0oi77447):

Do you need to support legacy devices? Maintaining compatibility with some legacy devices and software might require the use of custom multicast and broadcast protocols. Since these capabilities give your app complete access to the user’s local network, such access requires the com.apple.developer.networking.multicast restricted entitlement.

I have this entitlement granted and added, but a UDP broadcast in my app is still causing the local permissions prompt. If the user doesn't allow, then the communication between the app and legacy hardware device on the network doesn't work.

I confirmed that the entitlement is included in the code sign of my app.

I submitted a FB8464116 for this issue.

Anything else I need to get this entitlement to work for my hardware discovery? Has anyone else had success with this?



Accepted Reply

I have this entitlement granted and added, but a UDP broadcast in my
app is still causing the local permissions prompt.

That’s expected. The entitlement is necessary to access multicast and broadcast but it’s not sufficient. You must also get user consent.

Share and Enjoy

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

Replies

I have this entitlement granted and added, but a UDP broadcast in my
app is still causing the local permissions prompt.

That’s expected. The entitlement is necessary to access multicast and broadcast but it’s not sufficient. You must also get user consent.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
Thanks for the prompt reply. I'm a little confused because the app behaves the exact same without the entitlement (the UDP broadcast works fine in TestFlight builds as long as the user accepts the permissions prompt). I was hoping this entitlement would allow us to be able to discover the hardware device. The issue I'm trying to solve is that if our users don't hit the right button at that prompt, we can't detect this and tell them how to fix it. I just want our users to be able to setup their hardware device without having to contact a support line for help.

I'm a little confused because the app behaves the exact same without
the entitlement

I’ve seen similar reports from other developers, including some threads here on DevForums (sorry, I don’t have the URLs handy). My understanding is that this behaviour is considered a bug.

The issue I'm trying to solve is that if our users don't hit the right
button at that prompt, we can't detect this and tell them how to fix
it.

Right. The inability to detect whether the user has granted access to the local network has been the subject of much developer feedback regarding this change. Again, this has featured prominently in many DevForums threads (this one springs immediately to mind but I think there were others).

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
Did anyone receive any feedback on the missing API to check the network permission?

The design here seems inconsistent compared to how any other privacy permission (location, photos etc) works on iOS - all have APIs to check the status upfront. There are lots of use cases where this needs to be done upfront to display an appropriate warning and avoid customer confusion/complaints.

The network privacy permission is appreciated from a privacy perspective, but we need to be able to handle it in a way that the user experience is not worsened.