I’m using revenue cat in a flutter app to manage subscriptions. Users are not logged in, I’m only using anonymous App User IDs. It works like a charm.
However, a user has subscribed on his ipad and cannot use the entitlement on his iphone. He has an error when he tries to subscribe to the same entitlement.
If I add the restore purchases method, will that solve this issue ?
Or do I need to log in users ?
Thank you for your help
Best answer by Miguel Carranza
A restore button is not strictly required, what Apple requires is a restore mechanism:
Any credits or in-game currencies purchased via in-app purchase may not expire, and you should make sure you have a restore mechanism for any restorable in-app purchases.
Therefore, if your app has its own account system, you don’t need a restore button (even though it is recommended for user experience). If you are only using anonymous accounts, then you need to have it.
It’s actually an App Store requirement that you have a Restore Purchases button, so obviously App Review missed it. So yes, add a Restore button to your app.
A restore button is not strictly required, what Apple requires is a restore mechanism:
Any credits or in-game currencies purchased via in-app purchase may not expire, and you should make sure you have a restore mechanism for any restorable in-app purchases.
Therefore, if your app has its own account system, you don’t need a restore button (even though it is recommended for user experience). If you are only using anonymous accounts, then you need to have it.
I confirm that the restoring purchases method works with anonymous accounts on 2 ios devices which are sharing the same ios account. I hope it is clear.
I confirm that the restoring purchases method works with anonymous accounts on 2 ios devices which are sharing the same ios account. I hope it is clear.
Hey Paul, so how did you solve this? In my app I’ve implemented the restore purchases button which calls the following function:
public func restorePurchases() {
var activated = 0
Purchases.shared.restorePurchases { (customerInfo, error) in
if let entitlements = customerInfo?.entitlements.all {
activated = self.processCustomerInfo(entitlements: entitlements)
if (entitlements.isEmpty) {
self.showingRestoreFailedAlert.toggle()
}
}
// user has something activated - show thank you dialogif (activated > 0) {
self.showingRestoredAlert.toggle()
// there was some error - show nothing to restore dialog
} elseif let error = error {
print(error.localizedDescription)
self.showingRestoreFailedAlert.toggle()
// user has no active subscripions - show nothing to restore dialog
} elseif (activated == 0) {
self.showingRestoreFailedAlert.toggle()
}
}
}
Yet users are complaining on the same issue - bought my app from iPhone and are unable to restore purchases on iPad using the same account. All of my users are anonymous, I don’t have any kind of account management in my app. If they try to tap on a button that should initiate the purchase, it doesn’t seem to do anything either. I’m using the RevenueCat (4.3.0) library via Pods and on sandbox I never had this issue.
Also worth noting I wasn’t able to reproduce this behavior with my own devices, but they might be tainted with all the testing I’ve done in the past...
Hi Paul, thanks for getting back to me. I have set “transfer purchases” yes. Also this behaviour is not consistent among users. Most of them can restore purchases just fine. I’ve only migrated to RevenueCat last month, so I thought maybe I’m missing something in configuration.
I’m also receiving reports where some users are unable to restore on different Apple devices using the same Apple ID. I cannot seem to reproduce it and it seems fine for some people.
We use 3 different kinds of cookies. You can choose which cookies you want to accept. We need basic cookies to make this site work, therefore these are the minimum you can select. Learn more about our cookies.