I’m trying to determine the most appropriate modern method for detecting whether a user originally downloaded a paid app (prior to transitioning the app to freemium/IAP-based access).
Historically, this was done by checking for a valid App Store receipt and using SKReceiptRefreshRequest to ensure a fresh one was available. However, SKReceiptRefreshRequest and many related aspects of StoreKit receipt handling are now deprecated in iOS 17+.
The current Apple documentation on receipt validation still refers to SKReceiptRefreshRequest, which makes things unclear. With so many deprecations and the push toward StoreKit 2, what’s the recommended path to:
Check for a valid App Store receipt
Confirm that the app was originally purchased (as a paid app, not via IAP)
Persist this info to exempt the user from paywalling the app in the future
I don’t need to validate purchases of IAPs — just to detect a legacy paid app download.
Any guidance on best practice for this use case, preferably using non-deprecated APIs (StoreKit 2 or otherwise), would be appreciated.
Topic:
App & System Services
SubTopic:
StoreKit