Hi all,
I’m running into an issue with provisioning profiles not including the com.apple.developer.push-notifications entitlement — even though everything seems to be configured correctly.
Here's what I’ve done:
- Checked the App ID has Push Notifications enabled.
- I’ve clicked “Configure” and created a Production APNs certificate under the App ID.
- I’ve regenerated the provisioning profiles (Ad Hoc and App Store).
- I can see within the profiles within App Store Connect that the push notifications capability is listed
- I’ve downloaded and decoded the profiles using:
security cms -D -i profile.mobileprovision > decoded.plist
But com.apple.developer.push-notifications is still missing under the <key>Entitlements</key>
block.
This is causing issues because:
When I submit the build to eas I receive this error from XCode:
- Provisioning profile "*** Adhoc" doesn't include the com.apple.developer.push-notifications entitlement. Profile qualification is using entitlement definitions that may be out of date. Connect to network to update. (in target '***' from project '***')
Refer to "Xcode Logs" below for additional, more detailed logs.
To isolate the issue further I:
- Created a completely new App ID, enabling Push Notifications from the start.
- Created new APNs certificate.
- Generated new provisioning profiles with a valid distribution certificate.
- Still no push entitlement embedded in the profile.
Question:
Has anyone else encountered this issue where Push Notifications are enabled and configured, but the entitlement still fails to embed in the profile?
Thanks in advance.
com.apple.developer.push-notifications
isn’t the correct entitlement string. The droid you’re looking for here is aps-environment
:
% security cms -D -i Test786946_Dev.mobileprovision | plutil -p -
{
…
"Entitlements" => {
"application-identifier" => "SKMME9E2Y8.com.example.Test786946"
"aps-environment" => "development"
"com.apple.developer.team-identifier" => "SKMME9E2Y8"
"get-task-allow" => 1
"keychain-access-groups" => [
0 => "SKMME9E2Y8.*"
1 => "com.apple.token"
]
}
…
}
The best way to remember this is that aps
stands for Apple push service. It’s old enough that it’s missing the N (-:
Oh, and to complicate things somewhat, this changes to com.apple.developer.aps-environment
on macOS:
% security cms -D -i Test786946_Mac_Dev.provisionprofile | plutil -p -
{
…
"Entitlements" => {
"com.apple.application-identifier" => "SKMME9E2Y8.com.example.Test786946"
"com.apple.developer.aps-environment" => "development"
"com.apple.developer.team-identifier" => "SKMME9E2Y8"
"keychain-access-groups" => [
0 => "SKMME9E2Y8.*"
]
}
…
}
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"