To use the multicast special entitlement
) first ensure that you have an explicit App ID, then enable the Multicast Networking capability on that App ID, and finally enable the entitlement in your project. The following sections described each of those steps in detail.IMPORTANT
These instructions assume you’re building a typical app using Xcode using automatic code signing. Special entitlements issued via the new process are
compatible with manual code signing but I don’t cover those details.Note
These instructions were written for Xcode 12.4, iOS 14.4, and the developer web site at the time of publication.
Before getting started, you must prepare the ground:
Make sure you have permission to create App IDs and provisioning profiles. If not, you’ll need to coordinate with the folks on your team who do. See App Store Connect Help > Role permissions for more information about roles and permissions.
Go to the Account page on the developer web site.
Pull down the menu at the top right and confirm that you’re logged in to the right team.
To determine whether your app already has an explicit App ID:
In Xcode, go to the Signing & Capabilities editor.
The Provision Profile field should say Xcode Managed Profile. Click the little info button next to that. In the popup you’ll see an App ID field whose value is * if you’re using a wildcard App ID or your bundle ID if you’re using an explicit App ID.
If you’re using a wildcard App ID you must switch to using an explicit one. The easiest way to do this is to add the App Groups capability. Xcode responds to this by creating an explicit App ID for your app. If you have no use for App Groups, you can just remove the capability afterwards; the explicit App ID will ‘stick’.
Once you have an explicit App ID, it’s time to enable the Multicast Networking capability on it. To do this:
On the developer web site, edit your App ID’s capabilities using the process described in Developer Account Help > Enable app capabilities.
On the Edit Your App ID Configuration page, scroll to the bottom to the Additional Capabilities section.
Enable the Multicast Networking capability. If you don’t see that capability, see No Multicast Networking Capability below.
The next step is to enable the entitlement in your project:
In your app’s .entitlements file, add a com.apple.developer.networking.multicast entry with a Boolean value of true.
When you do this Xcode will notice that you’re using an entitlement that’s not in the current provisioning profile’s allowlist but is in your App ID’s allowlist. It responds to this by rebuilding the provisioning profile.
Build your app for the device (not the simulator!).
In Terminal, run the first command below to confirm that your app was signed with the entitlement.
Still in Terminal, run the second command below to confirm that your profile allows use of the entitlement.
|% codesign -d --entitlements :- /path/to/your.app | grep -A 1 "com.apple.developer.networking.multicast"|
|% security cms -D -i /path/to/your.app/embedded.mobileprovision | grep -A 1 "com.apple.developer.networking.multicast"|
If, in step 3 of Configure Your App ID
, you don’t see the Multicast Networking capability, check the following:
That you’re not set up to use the old process, as described in the Old Process post below. If you are, follow those instructions instead.
That you’re logged in to the right team (step 3 of Preparatory Work). This is the most common cause of this problem.
If this doesn’t help, wait a few days and try again. It can take time for this access to propagate through our systems.
If you still can’t get it working, run through the process again taking a screen shot at each step. Then get back in touch with us by replying to the email that notified you of your request’s approval, making sure to include your follow-up number in the response.