Enabling App Services

The services available to your app depend on the platform, your program membership, and how you intend to distribute your app. Certain app services—such as Apple Pay and Game Center—are available only to apps distributed through the store and require additional configuration in your Xcode project, your developer account, and sometimes iTunes Connect. However, some app services are available even if you don’t join the Apple Developer Program. To avoid code signing and provisioning issues, let Xcode perform the configuration steps for you when you enable these app services in your Xcode project. There should be no need for you to configure the Xcode project or enable these app services in your developer account yourself.

View App Services

The key app services you can add to your app are listed in the Capabilities pane in the project editor. Be sure to select the correct target in your project before enabling app services.

To open the Capabilities pane

  1. Choose View > Navigators > Show Project Navigator.

  2. Choose the target from the Project/Targets pop-up menu or in the Targets section of the second sidebar if it appears.

  3. Click Capabilities to view key app services.

    The screenshot below shows the Capabilities pane for an iOS app.


For Mac Apps, Enable App Sandbox

All apps submitted to the Mac App Store are required to use App Sandbox, so if you’re developing a Mac app for the store, enable App Sandbox now.

To configure App Sandbox

  1. In the project navigator, click Capabilities.

  2. If App Sandbox isn’t enabled, select the switch in the App Sandbox row.


    Xcode adds an entitlements file to your project and enables the App Sandbox entitlement.

  3. In the App Sandbox area, use the checkboxes to set additional entitlements for the app to do its job.


Enable App Services

In most cases, enabling a capability is as simple as turning on a switch. However, some app services—such as iCloud, Keychain Sharing, Wallet, and Background Modes—require more configuration. Additional options and instructions for those app services appear after the capability is enabled. Other app services—such as Game Center, In-App Purchase, and Maps—require additional configuration in iTunes Connect and are not covered in this document.

To enable a capability

  1. In the project navigator, click Capabilities.

  2. Click the disclosure triangle next to a capability and read its description.

    Xcode displays the steps it will perform to enable the capability, so you don’t need to perform these steps yourself. For example, to view Game Center configuration steps, click the disclosure triangle next to Game Center.

  3. Select the switch in the row of the capability you want to enable.

    For example, to enable Game Center, select the switch in the Game Center row. If Xcode successfully enables the capability, checkmarks appear to the left of the configuration steps. Some configuration steps include adding frameworks to your project. For example, when you enable Game Center, the GameKit framework is added to your project.

  4. If an error occurs, follow the instructions in the error message, and click the Fix Issue button to resolve the problem.

    For example, if you are offline, Xcode will fail to communicate with your developer account and complete all the steps. When you click the Fix Issue button, Xcode attempts to perform any remaining steps.

After enabling app services in your Xcode project, click the Run button in the project navigator to build and run your app using the new team provisioning profile.

Verify App ID Entitlements

To better understand how provisioning works, verify that Xcode adds entitlements to your App ID (according to the app services you enabled) and regenerates the corresponding team provisioning profile.

Remember that Xcode initially creates a team provisioning profile containing a wildcard App ID that can be used to sign multiple apps and enable some app services. For example, if you enable Wallet, the Wallet entitlement is added to the wildcard App ID. Later, when you enable app services that require an explicit App ID, Xcode registers an explicit App ID that uniquely matches the app’s bundle ID. Xcode then creates another team provisioning profile that contains the explicit App ID. If an App ID already exists for your app, Xcode uses it in the team provisioning profile instead. Therefore, you may see multiple team provisioning profiles in your account—one for the wildcard App ID and one for each explicit App ID in your account.

View Provisioning Profiles in Xcode

Whenever you create a development certificate, register a device, or change an entitlement, Xcode regenerates and downloads the team provisioning profile. You can view the downloaded provisioning profiles in Xcode.

To view your team provisioning profile in Xcode

  1. Choose Xcode > Preferences, and click Accounts at the top of the window.

  2. Select the team you want to view, and click View Details.

    In the dialog that appears, view team provisioning profiles in the Provisioning Profiles table. If your team provisioning profile uses the Xcode-managed wildcard App ID, the team provisioning profile name ends in *.

    For example, Xcode uses the wildcard App ID if only Wallet is enabled in this screenshot for an iOS app:


    If you enable iCloud, which requires an explicit App ID, Xcode creates a new provisioning profile using the explicit App ID, as shown in the iOS app screenshot below.


View Provisioning Profiles in Your Developer Account

If you join the Apple Developer Program, you can view more details about provisioning profiles in your developer account than you can in Xcode.

To view your team provisioning profile in your developer account

  1. In Certificates, Identifiers & Profiles, under Provisioning Profiles, select All or Development.

    If you add a capability that requires an explicit App ID, multiple active team provisioning profiles appear. Xcode uses the team provisioning profile containing the explicit App ID that matches your app’s bundle ID; otherwise, Xcode uses the team provisioning profile containing the wildcard App ID.

  2. Under iOS Provisioning Profiles or Mac Provisioning Profiles, select the team provisioning profile.

    The entitlements appear in the Enabled Services field. These entitlements may be a superset of the entitlements you added to your project using the Capabilities pane.


    For iOS apps, if you enable an app service that requires an explicit App ID, both the Game Center and In-App Purchase entitlements are added to your App ID by default. For Mac apps, In-App Purchase is enabled by default for an explicit App ID. However, to use these services from your app, enable them in the Capabilities pane.

Verify the App ID Settings

Xcode adds entitlements to an App ID, not to a team provisioning profile, so verify App ID settings in your developer account to learn where this information is located.

To verify the App ID settings

  1. In Certificates, Identifiers & Profiles, select Identifiers, and under Identifiers, select App IDs.

  2. Select the explicit App ID that matches your bundle ID if it exists; otherwise, select the Xcode-managed wildcard App ID.

    The Application Services table contains a whitelist of the services your app can use. A green circle next to Enabled appears in the Development column of the services your app can use. A yellow circle next to Configurable appears if the app service is not fully configured.


You can also edit App ID settings using your developer account, but any changes you make in your developer account won’t configure app services in your Xcode project. Use the Capabilities pane in Xcode to fully configure app services.

Learn More About App Services

Refer to this table for more information on key app services that appear in the Capabilities pane in Xcode or require additional configuration using Xcode, your developer account, or iTunes Connect.

To learn about


Apple Pay

A mobile payment technology that lets users give you their payment information for real-world goods and services.

Apple Pay Programming Guide

App Sandbox

Provides the last line of defense against stolen, corrupted, or deleted user data if malicious code exploits your Mac app.

Configuring App Sandbox (Mac)

App Sandbox Design Guide

Entitlement Key Reference

Background Modes

Enabling background modes allows your app to continue running in the background.

Configuring Background Modes (iOS, tvOS)


Provides a database-like model for storing both private and public data where public data is owned by the app and can be shared among all users of the app.

CloudKit Quick Start

CloudKit Framework Reference

Data Protection

For iOS apps, adds a level of security to files stored on disk by your iOS app.

Protecting Data Using On-Disk Encryption in App Programming Guide for iOS

Game Center

Allows players to connect devices to Apple’s social gaming network and to exchange information.

Game Center Programming Guide

Game Center Configuration Guide for iTunes Connect


For iOS apps, provides a structure that apps can use to share health and fitness data.

HealthKit Framework Reference


For iOS apps, provides ability for apps to control accessories that support HomeKit Accessory Protocol.

HomeKit Developer Guide

HomeKit Framework Reference

iCloud Storage Key-Value and Document Storage

Allows sharing of user’s data among multiple instances of your app running on different devices and Mac computers.

Adding iCloud Support

iCloud Design Guide

In-App Purchase

Embeds a store directly into your app by accessing the store and securely processing payments from the user.

In-App Purchase Programming Guide

In-App Purchase Configuration Guide for iTunes Connect

Inter-App Audio

Allows your app to export audio that other apps can use.

Working with Inter-App Audio

Keychain Sharing

Allows your app to share passwords in the keychain with other apps developed by your team.

Configuring Keychain Sharing


Makes your app’s routing information available to Maps and other apps that need point-to-point directions.

Location and Maps Programming Guide

MapKit Framework Reference

Push Notifications (Apple Push Notification service)

Allows an app that isn’t running in the foreground to notify the user that it has information for the user.

Configuring Push Notifications (iOS, watchOS, Mac)

Local and Remote Notification Programming Guide


Presents digital representations of information—such as a coupon, ticket for a show, or boarding pass—that allow users to redeem a real-world product or service.

Wallet Developer Guide

PassKit Framework Reference


In this chapter, you learned how to enable some app services that Apple provides for apps submitted to the store. By examining your team provisioning profiles and App IDs in your developer account, you gained a deeper understanding of how provisioning works. You also learned where to find more information on these app services.