com.apple.developer.networking.multicast Platform Scope

We have the Multicast entitlement, it is a crucial feature used for basically every aspect of our apps. It seems to work when applied to one of our iOS apps. Once granted, it is now possible to apply it to any Profile for any of our team's apps. The following are subsequent questions I'm not sure about.
  • All of our apps require Multicast. One is not published yet. Applying for this requires an App Store URL. Do we need to apply again for every single app even from the same team? Since there is no URL for the new app but the entitlement is allowed and App Store build submission succeeds, it's not clear if the team has the entitlement, or the bundle ID does.

  • The official documentation for this entitlement says it also applies to macOS 11 and tvOS 14:

https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_networking_multicast?language=objc
  • However, so far I have been unable to get a build signed and submitted for either Catalyst or tvOS due to provisioning errors if I include that entitlement. Can I safely assume this entitlement is not needed for either platform in this release cycle (tvOS 14/macOS 11)? I have not yet observed actual functional loss on either of those platforms as we have on new iOS 14 builds.

  • Similarly, we have a Widget (pre-iOS 14 ObjC style) and a SiriKit Extension. They both have entitlement files. Adding this entitlement to either of them also seems to cause errors. Yet, both of them need multicast. Can I assume this entitlement will apply to all extensions within our app even though declared only in the top level entitlements file? Or perhaps we need to apply for every single bundle ID of every single extension inside every single app separately?

It is possible/likely some of my tests above failed due to this morning's developer site maintenance which began right after the iOS app worked in my tests. So before I go too far down this path, I wanted to clarify the scope needed here for ObjC Widgets, SiriKit, Catalyst, and tvOS. We were quite surprised when suddenly sockets multicast stopped working, so are concerned about whether the same surprise functionality change might occur in future minor releases of macOS/tvOS given the documentation.

Thanks.

Replies

Do we need to apply again for every single app even from the same team?

No. The entitlement is granted to your team, not to a specific app.

Can I safely assume this entitlement is not needed for either platform
in this release cycle (tvOS 14/macOS 11)? I have not yet observed
actual functional loss on either of those platforms as we have on new
iOS 14 builds.

It’s definitely not relevant to macOS. I’m not sure about the tvOS side of things. Regardless, I’d appreciate you filing a bug against the doc for saying that it’s needed on macOS. Please post your bug number, just for the record.

Can I assume this entitlement will apply to all extensions within our
app even though declared only in the top level entitlements file?

I don’t know )-: Matt might know this off the top of his head, so I’ve asked him to chime in. If not, my advice is that you open a DTS tech support incident and one of us will get you a definitive answer.

Share and Enjoy

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

Can I assume this entitlement will apply to all extensions within our app even though declared only in the top level entitlements file?

I ran some tests here locally with the Multicast Entitlement. The first was on the container app that contained a Widget target and the second was with the Multicast Entitlement on the Widget target only; What I found was mixed results. When the container app contained the Multicast Entitlement alone it did not provide sufficient permissions to use the Multicast APIs. There were several instances of "Sandbox permission denied," in the console when I tried to use this API in this way.

When I added the Multicast Entitlement to provisioning profile for the Widget target I received very sporadic results. First attempt brought the widget's NWConnectionGroup object into the .waiting state but ended up receiving a "failed -> (Address already in use)" error. The next attempt did result in the Local Network Privacy prompt being displayed but no data was every received or transmitted from the Widget. I would open an Enhancement Request for Multicast Support on Widget.


Matt Eaton
DTS Engineering, CoreOS
meaton3@apple.com