Apple’s WWDC20 conference this year contained many updates about in-app purchases, subscriptions, and the StoreKit framework. In case you did not catch it all or have time to watch all the videos, we’ve got a short recap of the most important updates you’ll want to be aware of.
The major updates to in-app purchases fall into three main categories
Let’s take a look at each one of these in a little more detail.
The ability to create a subscription that can be shared by a family is one of the most exciting announcements this year. Now you will have the option to create products at different price points for a family shareable subscription or a subscription for an individual consumer.
To use this feature, you first must enable family sharing in App Store Connect for a particular subscription. By turning this feature on, all members of the same family set up in iCloud can share a single purchase to a subscription. This is a great new benefit you can offer your customers with a little bit of configuration on your app.
Once you turn on family sharing for a subscription, you cannot disable it.
The consumer purchasing the subscription must also agree to enable subscription sharing for family members. The person making the purchase can also choose to shut this off. Once a subscription with family sharing has been purchased, other members of the family can access the subscription by doing a Restore Purchase action on their device.
StoreKit will see each family member’s subscription as a unique transaction as if they had purchased the subscription themselves.
SKProduct now also adds an "isFamilySharable" flag to a product, so you can tell which products are available to share with other family members and present that information to the user.
There is also a new API on the SKPaymentQueue to help manage when a user decides to disable family sharing called didRevokeEntitlementForProductIdentifiers. In this method, you’ll need to re-verify the receipt and revoke access as needed.
Apple announced some exciting improvements to how you can track attribution of any ad campaigns you are running for your app. The highlights include
Setting custom conversion values is a very powerful new feature. Now instead of just tracking installs, you can track whether users are engaging with specific features in your app, registering for an account, or even making an in-app purchase.
SKAdNetwork now has an updateConversionValue that takes an integer. On subsequent calls, Apple will update this value only if the new integer is greater than the old one. This means it is very important to structure your conversion values along a path of increasing engagement in your app, to get the most insight.
Apple used to only track first-time downloads via SKAdNetwork, but now there is a new field Redownload. You can use this to see if your ad was successful in getting a user to reinstall your app.
Finally, Apple has added a Source App ID, so you can track if certain apps are better at acquiring you downloads.
In your SKAdNetwork postback, you’ll now receive Redownload, and optional values for Source App ID and Conversion Value. These last two are optional because Apple will only include them if it can do so without risking identifying a specific customer.
If you have a catalog of multiple apps, Apple announced some great new features for you. There’s a new API called SKOverlay that allows you to present an overlay at the bottom of your app’s UI that customers can directly install an app from.
Two main uses for this new UI element are
For more details on each of these customer facing updates, watch the second half of this video:
There were two new Server to Server notifications announced this year
REFUND is the first ever server notification for content types other than auto-renewable subscriptions.
With the introduction of the REFUND notification, Apple is broadening the scope of this service to include all purchase types. We expect more server-side data for all IAP types to be added over time, so it is important to make sure you are handling server-side events from Apple in your IAP process.
In StoreKit, there's a new listener callback to detect refunds, or subscriptions being revoked, didrevokeEntitlemnetsForProductIdentifiers.
The new DID_RENEW event is going to be a great addition that gives a more clear signal to track what is happening with your users.
Apple continues to move step-by-step in the direction of their Server to Server notifications being the primary way for an app to understand the customer lifecycle and payment activity. When receiving a Server to Server notification, server-side verification of the receipt is still the best way to then validate the status of your customers.
For more details on the latest changes for server to server notifications, watch the first half of this video:
Apple announced a whole set of tools for testing your in-app purchases in Xcode. These new capabilities will be a huge help in testing and adding IAP to your app.
It is now possible to use and test StoreKit in the simulator. This will allow you to
Apple introduced StoreKitTesting, a testing framework to enable you to test various aspects of purchase flows for both unit and UI tests.
Apple has announced a number of on-device improvements to working with the Sandbox.
All of these new StoreKit testing options open up a bunch of new ways to be confident that your purchase process is working correctly and reliably.
For more details on StoreKit Testing, watch this video:
Nami’s platform offers tools to simplify providing great purchase experiences to your app users, handle all the server-side events including receipt verification and Server to Server notifications, as well as tools to help you test the purchase lifecycle in your app. Sign up for free to get started.
What app developers need to know to offer alternative payments for App Store apps in South Korea.
StoreKit 2 refinements, App Store Server API notification history, IAP testing improvements, benchmarks in app analytics, and Apple Pay improvements. Everything you need to know about IAP payments and monetization from WWDC 2022.