Distributing “reader” apps with a link to your website
Reader apps are apps that provide one or more of the following digital content types — magazines, newspapers, books, audio, music, or video — as the primary functionality of the app. With reader apps, people can sign in to their account created outside the app, letting them view and enjoy previously purchased media content or content subscriptions on their Apple device. If you’d like your reader app to also provide a link to your website where people can create and manage their account, learn about requesting the External Link Account Entitlement, usage guidelines, and implementation details.
Requesting the External Link Account Entitlement
If you’re interested in using this entitlement, you can get started by submitting a request form. You’ll need to be an Account Holder in the Apple Developer Program, answer some questions about your app, and agree to the entitlement’s terms and conditions. Entitlement requests are per bundle ID (the app’s unique identifier) and assigned entitlements can only be used with the single binary associated with the bundle ID. In order to be eligible, your app must:
- As the primary functionality of your app, provide one or more of the following digital content types: magazines, newspapers, books, audio, music, or video.
- Allow people to sign in to an account.
- Allow people to access content or services previously purchased outside of the app when signed in, such as on your website.
- Not offer in-app purchases on iOS, iPadOS, or tvOS while using the External Link Account Entitlement.
- Not facilitate real-time, person-to-person services (e.g., providing tutoring services, medical consultations, real estate tours, or fitness training).
Note: Apps that let people access digital content such as music or video, but not as the primary functionality, are not considered reader apps and are not eligible for the External Link Account Entitlement. For example, a social networking app that lets people stream audiovisual content is not eligible.
Configuring and enabling the entitlement in Xcode
After you’ve received an email confirmation that the entitlement has been assigned to your account and you’ve configured your app’s App ID in Certificates, Identifiers, and Profiles to support this entitlement, you’ll need to update your Xcode project, entitlements plist file, and Info.plist file to list the entitlement and metadata.
To make these updates:
- In the Project navigator, select the .entitlements file. In Xcode 13 or later, the file name is prefixed with an icon
- In the entitlements plist file, add a new entitlement key pair by holding the pointer over the Entitlements File row and clicking the add button (+).
- Provide the following values for the entitlement:
- Key: com.apple.developer.storekit.external-link.account
- Type: Boolean
- Value: True
- Provide the required metadata in your Info.plist file as described below in “Updating your Info.plist file”.
On the next build to your device or distribution request in Xcode Organizer, Xcode will detect that the .entitlements file and cached provisioning profile don’t match, and will request a new provisioning profile based on the latest app ID configuration to complete the code signing process.
Updating your Info.plist file
Each entitlement has unique requirements for the data that must be entered into your app’s Info.plist file.
To update data for this file:
- Select the Info.plist file from the Project Navigator.
- Provide the following values for this entitlement:
- Key: SKExternalLinkAccount
- Type: Dictionary with string values
- Key: Region codes as keys and a single URL as the value. It must contain a key with the string * that maps to a default URL.
- Value: A single destination URL (the link to your website)
Note: At all times, the URLs that you provide in the Info.plist file in Xcode must match the value in the app binary you submitted to App Review. Make sure that each value is a string that:
- Uses the https scheme;
- Forms a valid, absolute URL;
- Contains no query parameters; and
- Contains 1,000 or fewer ASCII characters.
Learn to manage your app’s Info.plist file
Understanding app and link requirements
In addition to enabling an entitlement for your app and implementing the required External Link Account APIs, you must follow usage requirements designed to help protect privacy and security, prevent scams and fraudulent activity, and maintain the overall quality of the experience. Any link provided in a reader app must:
- Link to a website you own or have responsibility for;
- Open a new window in the default browser on the device, and may not open a web view;
- Not pass additional parameters in the URL, in order to protect the user (for example, their privacy);
- Be submitted with your reader app to the App Store, and shall be resubmitted if the URL changes;
- Not include, or be used with, language that includes the price of items available on the website (acceptable language includes “go to example.com to create or manage your account”);
- Be formatted like a standard HTML link (i.e., blue underlined text) and contain the domain name of the website;
- Be displayed only once per app page, and must display the same message in each instance;
- Be statically defined in the external-link.account key value in your app’s Info.plist before submission to the App Store; and
- Go directly to your website without any redirect or intermediate links or landing page.
The External Link Account Entitlement can be used by approved reader apps distributed in any country or region where the App Store is available, and is compatible with devices running iOS and/or iPadOS, or tvOS 16.4 or later.
Implementing the in-app modal sheet
Using StoreKit APIs. Each time someone taps a link to your website to create an account or manage an existing account, your app must show an interstitial modal sheet within the app before linking out. Your app must call canMakePayments and confirm that the user has permission to make payments before showing this sheet.
Follow modal sheet details. For iOS 16 and/or iPadOS 16 or later, and tvOS 16.4 or later, this is implemented by using the External Link Account API. For devices running earlier versions of iOS, iPadOS, you’ll need to implement the modal sheet by following exactly the modal sheet’s design and text provided below.
Supporting multiple locales. To include URLs for locale-specific versions of your website, you’ll need to include them in the Info.plist file used by your app as a dictionary containing a key for each region and an associated URL string value. In addition, use the Apple-provided locale text strings in your implementation of the modal sheet.
Download design specifications (5 MB)
Submitting your app for review in App Store Connect
When submitting your app binary for review in App Store Connect, make sure to adhere to the terms and conditions of the entitlement, the App Store Review Guidelines, and the Apple Developer Program License Agreement.
In addition, you’ll need to confirm that:
- Your in-app modal sheet is properly implemented and tested.
- The website your app links to is fully functional.
- Screenshots of your app’s UI where you make the required disclosures to users are included with your submission.
If your submission is incomplete, review times may be delayed or your app may be rejected. Once your app has been reviewed, its status will be updated in App Store Connect and you’ll be notified.
Frequently Asked Questions
I have a reader app that’s already published on the App Store. Am I required to use an entitlement?
No. The External Link Account Entitlement is optional and only required for reader apps that wish to link out to a website for account creation and management. Reader apps can continue to offer account creation for free tiers, and account management functionality for existing customers within the app, per guideline 3.1.3(a).
Can I include a link to my website for account creation and management in my app’s metadata?
No. Reader apps may link out to an external website for account creation and management only from the app using the External Link Account Entitlement. This provides a more secure and transparent experience for a user leaving Apple’s ecosystem.
I distribute multiple reader apps on the App Store. Can I use the same assigned entitlement in more than one app?
No. The External Link Account Entitlement is assigned per bundle ID (the app’s unique identifier) and the assigned entitlement can only be used with a single binary associated with the bundle ID. If you have multiple reader apps, you’ll need to make a separate entitlement request for each reader app.
Can I use the entitlement in an app that offers in-app purchases to link out for account creation and management on the web?
Apps that offer in-app purchases on iOS, iPadOS, or tvOS are not eligible for the entitlement.
If my app is already on the App Store, can I change it to a reader app?
It depends. An app’s business model may change over time as developers add new content and features. However, it’s not appropriate to submit an update that significantly changes the app’s primary functionality, as this creates a poor experience for current users. If you have a new app concept you’d like to distribute on the App Store, we recommend creating a new app record and binary to submit for review.
I’ve been assigned the External Link Account Entitlement, but when I submitted my app for review I was told that it’s not an eligible reader app. How do I resolve this issue?
All submissions to the App Store are subject to approval by App Review. If during the app submission process your app is found to not qualify as a reader app, it won’t be approved as long as it includes the External Link Account Entitlement. Refer to the message in App Store Connect for additional information.
Is my app required to use the External Link Account API?
Reader apps that include the External Link Account entitlement and run on a minimum of iOS 16, iPadOS 16, or tvOS 16.4 must use the External Link Account API. If your app is on the App Store, you need to implement the API in your app and submit an update as of October 12, 2022.