Support a single auto-renewable subscription across multiple apps.
You can offer customers auto-renewable subscription services that are accessible through multiple apps across one or more operating systems.
In order to offer this functionality, your server must grant access to the subscription content across all apps, despite the user having purchased the subscription within a specific app. You can use a unified account management database along with server-side receipt validation to validate a user's purchase and ensure in-app transactions are handled. By entitling subscription access from your server, you can provide users the ability to access your subscription across multiple apps.
Create the Subscription for Each App
To get started, use App Store Connect to create a separate and equivalent auto-renewable subscription for each app that offers the multi-app subscription so that users can subscribe from any app. For design guidance, see Human Interface Guidelines > In-App Purchase.
Figure 1 depicts the steps for implementing the multi-app subscription, as described below.
Authenticate the User
When providing auto-renewable subscription access across multiple apps, you must authenticate the user in a way that can be correlated across apps. Authenticating users via a login allows you to determine if the user has access to the content. The login process should be consistent across your apps.
As an alternative to requiring a login in your apps, you can take advantage of CloudKit. CloudKit allows you to share user-specific data across apps on the user's behalf. You can store and retrieve this data across your apps and the user's devices to unlock access appropriately.
Check Billing Status
Once you have authenticated the user, determine whether they should be granted access to the content based on their transaction history in the receipt.
Check if the user has purchased any subscription products before showing a subscription offer in the app. If there is a subscription purchase from any app, verify if the subscription is active by looking at the subscription expiration date in the receipt.
Present users who do not have an active subscription with the subscription for purchase. Consider all potential billing scenarios within your account database when determining eligibility and granting access to a user.
Validate Subscription Status
A user's subscription status can change any time. Validate the receipt and check the latest subscription expiration date to maintain the billing status for each user and reflect any changes.
Enabling Server-to-Server Notifications keep your server aware of changes made to a customer's subscription status. Update your records to keep users' subscription status and content current. The billing status must be accurate in your account database to provide the expected user experience across all apps.
Enable Access to Purchased Content
Once you have determined that the user should have access, you can enable access in each app based on the subscription expiration date. The user should be able to access the subscription within any app that offers the same service. The previous steps can be repeated as necessary across each app or user's session to unlock the subscription.