To use the multicast entitlement
) first ensure that you have an explicit App ID, then enable the Multicast Networking additional 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 with automatic code signing. Additional capabilities issued via the new process are
compatible with manual code signing but I don’t cover those details here.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, 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 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 additional 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 additional capability. If you don’t see that capability, see No Multicast Networking Additional 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.
Xcode will then 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. Yay!
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 additional 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 day 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.