Thanks for being a part of WWDC25!

How did we do? We’d love to know your thoughts on this year’s conference. Take the survey here

Provisioning Profile Missing com.apple.developer.push-notifications Entitlement Despite Correct Setup

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.

Answered by DTS Engineer in 842109022

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"

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"

Provisioning Profile Missing com.apple.developer.push-notifications Entitlement Despite Correct Setup
 
 
Q