Hello,
I upgraded my Apple Developer account from free to paid (Individual), but I cannot enable “Background Modes” (specifically “Location updates”) for any of my App IDs—including both old App IDs created while on the free account and brand new App IDs created after upgrading.
When I go to Apple Developer Portal > Identifiers > [select App ID] > Edit, the option for “Background Modes” is missing from the list of capabilities.
This is preventing me from enabling required entitlements for background location in Xcode, and all provisioning profiles fail with errors such as:
Provisioning profile "iOS Team Provisioning Profile: [my bundle id]" doesn't include the com.apple.developer.location.always and com.apple.developer.location.background entitlements.
Steps I’ve Taken:
Upgraded to a paid Apple Developer Program (verified in my account).
Created new App IDs after upgrading—Background Modes is still missing.
Created new Xcode projects with new App IDs and bundle identifiers—same result.
Refreshed provisioning profiles, cleaned Xcode, logged out/in—no change.
Contacted Apple Support; advised to file a Code-Level Support request, but the issue is with the portal/App ID capabilities, not my code.
My Question:
Has anyone experienced this issue where Background Modes capability is missing for all App IDs, even after upgrading to a paid account?
Is there any workaround, or does this require intervention from Apple Developer Support to “unlock” the missing capabilities for my developer account?
Any insight or advice would be appreciated!
Thank you.
UIBackgroundModes was already configured in info.plist:
Great! That's all you need to do.
Entitlement provisioning is not an LLM hallucination it's part of the error message:
Yes, I'm afraid it is. Let me start with the error message here:
Automatic signing failed
Xcode failed to provision this target. Please file a bug report at <https://feedbackassistant.apple.com> and include the Update Signing report from the Report navigator.
Provisioning profile "iOS Team Provisioning Profile: [app id]" doesn't include the com.apple.developer.location.always and com.apple.developer.location.background entitlements.
Structurally, code signing entitlements involve comparing a list of keys/values from two different sources:
-
The entitlements embedded in your app code signature, which come from your entitlements plist.
-
The entitlements in the embedded provisioning profile, which came from our developer portal.
Critically, that also means that failures can accurately be described in two different ways:
-
The entitlement file defines a key which is not in the provisioning profile.
-
The provisioning profile does not include a key which the entitlement file defines.
Note that BOTH of those descriptions are completely accurate, however, Xcode generally prefers the second description over that first. That's because, for most errors, the solution is to modify the portal configuration to include what ever is "missing".
However...
As far as I understand there should be a capability for background modes in the App ID Configuration.
No, that's not true.
The ONLY thing you need to do to enable background location updates is include "location" in your "Background Modes" Info.plist key. More specifically:
-
The
"location"
background mode was introduced in iOS 4, dating from a kinder, simpler time. At that point we made VERY limited use of code signing entitlements, certainly nothing like we do today. It does not require any specific entitlement and never has. -
The specific entitlements
"com.apple.developer.location.always"
and"com.apple.developer.location.background"
simply do not exist and NEVER have.
One clarification that might help explain this:
When I go to Apple Developer Portal > Identifiers > [select App ID] > Edit, the option for “Background Modes” is missing from the list of capabilities.
The term "Capabilities"
is a term that was invented after the fact by Xcode when it's interface consolidated a number of totally unrelated technical mechanisms like:
-
Entitlements
-
Specific Info.plist keys (notably, "Background Modes")
-
Non-entitlement based build and code signing configuration (like App Sandbox and the hardened runtime).
None of those technologies have any real relationship with each other. Xcode lumps them together as "Capabilities"
because they're somewhat conceptually similar ("allow/make may app do <insert description>") and because that's how it chose to make it's interface work. However, ONLY #1 involves the developer portal.
Finally, completing the circle, our documentation and the portal have now started referring to "Entitlements" as "Capabilities". This was done so that the portal and Xcode are using the same vocabulary. It's also correct in the sense that "All Entitlements are Capabilities". However the reverse, "All Capabilities are Entitlements", is NOT correct, which is what makes this confusing.
Finally:
These are not real entitlements. I suspect you’ve been mislead by an LLM hallucination )-:
As Quinn said, this was almost certainly caused by an LLM hallucination, as those values simply do not exist in our system. Indeed,the first value doesn't even makes sense in terms of how CoreLocation actually works.
__
Kevin Elliott
DTS Engineer, CoreOS/Hardware