Skip to main content

I have an app that has been available in the App Store for sometime.  Many users have made a life time purchase to be ad free.

I now wish to convert that payment to a yearly subscription.

I have been doing some testing with a prototype app after following the tutorial by Code With Chris.

The life time purchase will no longer be an option once I have updated to subscription

If a life time purchasers deletes then reinstalls the app after the update they will see the ‘Go Ad Free’ button and the ‘Restore Purchases’ button available to them.

Question - I want to understand the behaviour when one of these users taps the ‘Go Ad Free’ button instead of restore.

In my testing the App Store response does recognise that the user has already purchased life time Ad Free status and appears to charge them for a subscription.  Although the subscription doesn’t appear in the sandbox recent transactions so maybe there is no charge?  It would not be clear to the user though.

Sorry for the long question.  I hope that it is clear.

Hey @Peter Rule!

Since these are two separate in-app products, the user will have the ability to buy both of them if you give them the option. Meaning, if the user has previously purchased the lifetime product, and you present the user with a paywall allowing them to buy the new subscription product, they will be able to buy that subscription product.

You can add the old lifetime product and the new subscription product to the same entitlement in RevenueCat, but that won’t prevent Apple from processing the purchase if you allow the user to purchase that product.

I’d recommend very clearly communicating to your customers that if they previously purchased the lifetime product, they should restore purchases before attempting to purchase a subscription. Once a user restores their purchases, our SDK will sync their purchase history with RevenueCat and unlock the associated entitlement, and you can dismiss the paywall.


Thanks for the reply Cody.

A couple of follow up questions

  1. would a way around this be to call restore purchases when they tap the Go Ad Free button. Then if they don’t have anything to restore proceed to the purchase?
  2. is the behaviour you describe in the first paragraph what would happen if implementing this scenario natively

Thanks for the reply Cody.

A couple of follow up questions

  1. would a way around this be to call restore purchases when they tap the Go Ad Free button. Then if they don’t have anything to restore proceed to the purchase?

You could call `syncPurchases`, which takes the existing device receipt and syncs it- but the receipt might be out of date. This works in most cases, but may not contain the most recent renewals of subscriptions, etc. You should only call `restoreTransactions` after a user deliberately chooses to restore purchases, as it may prompt for sign-in.

 

  1. is the behaviour you describe in the first paragraph what would happen if implementing this scenario natively

The underlying store purchase behavior is the same regardless of native implementation or hybrid implementation (like Flutter, or React Native). The only case where Apple would prevent an in-app purchase is if the user is attempting to purchase an auto-renewing subscription in the same subscription group that they are already subscribed to.


Reply