Is it necessary to have a user registration mechanism if app has subscriptions?

Hello there,

Recently my app was rejected with the following message:

Regarding 3.1.2, your app offers a content subscription but does not have a mechanism in place to support the requirement that the subscription content be available to the user on all of their iOS devices.

To resolve this issue, it would be appropriate to modify your app to include an optional user registration feature to deliver subscription content to all of the user's iOS devices.

I don't understand why I need a registration mechanism if user uses their AppleID to purchase a subscription. Will it not work on another device if the same AppleId is used?

Thanks!

Sounds to me like a simple "Restore Purchases" workflow would get you in compliance with requirement 3.1.2. Yes, a user who is signed in with their AppleID will have access to their purchases across devices, but only if you've implemented the logic to make it happen.

Do you have this? If so, I'd point it out to App Review, otherwise, it is a miss and you should implement it.

This does two things:

  1. Allows the user to restore that purchase (subscription) on the same device if they uninstalled and reinstalled your app
  2. Allows the user to access the content on all of their iOS devices.

This would be a great opportunity to take a look at the new StoreKit 2 APIs along with the new on-device receipt validation.

Meet StoreKit 2

Restore purchases should meet that criteria but there is no reason a customer ever needs to use that mechanism. Upon app launch your app can use app receipts or original_transaction_ID with our Server API's or use StoreKit2 to get the current status of the signed in user (App Store Apple ID) - from there your app should know if user is new, active, billing retry, grace period or expired.

After I switched from standard StoreKit implementation to RevenueCat my app was accepted. I’m still uncertain what was the difference. However, the one thing in the code, that this time was different, was absence on of storing receipts of purchases in UserDefaults. Before I was using UserDefaults to quickly retrieve receipts. I have a suspicion that I might messed up something in the related logic and it didn’t work on all devices somehow. Thanks all and good luck!

Is it necessary to have a user registration mechanism if app has subscriptions?
 
 
Q