Home
Blog
What’s New with In-App Purchases? WWDC20 Updates

What’s New with In-App Purchases? WWDC20 Updates

Portrait photo of blog author
Kendall Gelner
Senior iOS Engineer

Apple announced a lot of changes to subscriptions and IAP in iOS 14 at WWDC this year. Our summary has you covered on the most important changes.

Table of Contents:

In this blog post:

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.

New IAP Features for Customers

Family Sharing

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.

How does this work in StoreKit?

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.

More detailed information on App installs from Ads

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
  • Tracking of re-installs
  • Data on which apps your adds successfully converted from

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.

In-app cross-promotion of your entire app catalog

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

  • If you are using Apple’s new App Clips, promote your full app from the App Clip
  • Promote other apps in your catalog to your customers

StoreKit basics

  • Initialize with a SKOverlay.Configuration object
  • Call present method with UIWindowScene to show the UI element
  • There’s a dismiss call to manually dismiss the overlay
  • Use the SKOverlayDelegate to react to changes in the overlay status

For more details on each of these customer facing updates, watch the second half of this video:

https://developer.apple.com/wwdc20/10661

Updates to Server to Server Notifications

There were two new Server to Server notifications announced this year

  • The REFUND event will be sent when a customer is issued a refund
  • The DID_RENEW notification will be sent for every single renewal

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:

https://developer.apple.com/wwdc20/10661

StoreKit Testing

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.

Simulator Improvements

It is now possible to use and test StoreKit in the simulator.  This will allow you to

  • Define products locally in a StoreKit configuration and choose which product configuration to use via the scheme editor.
  • Simulate a variety of exceptional purchase conditions, like Ask To Buy or payment issues.
  • Alter the duration of test subscriptions so even a year can expire quickly to test the handling of expiration.
  • Use the Xcode browser to examine and modify the status of subscriptions in the simulator.

Unit Testing

Apple introduced StoreKitTesting, a testing framework to enable you to test various aspects of purchase flows for both unit and UI tests.

On-Device Improvements

Apple has announced a number of on-device improvements to working with the Sandbox.

  • Sandbox test account management has been improved.
  • Examine and modify the status of subscriptions for a test account.
  • Reset aspects like trial and introductory offer eligibility for an account.
  • Ability to place test accounts into states to test purchase flow errors in App Store Connect.

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:

https://developer.apple.com/videos/play/wwdc2020/10659/

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.

Kendall Gelner is a Senior iOS Engineer at Fieldwire. Previous, he was the founding iOS Architect at Nami ML. He is well regarded in the iOS development community for his technical knowledge and platform experience going back to the App Store launch. The last SDK Kendall was responsible for shipped inside of some of the most widely installed apps, reaching more than 200 million devices.

Sign up to our newsletter

Get the latest articles delivered straight to your inbox.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.

Similar articles

Read similar articles to this one