Our app is a Catalyst app with a single non-consumable in-app purchase. Over the last few weeks we've had a number of users complaining that they've purchased the app on macOS but when they come to restore the same purchase on their iOS devices, our app tells them that there's "No purchase found to restore". This is the code that is giving the message:
public func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
guard queue.transactions.count > 0 else {
self.setError(text: "No purchase found to restore")
return
}
...
So the delegate function is getting called, but the transaction queue is empty.
We never have problems with iOS purchasers restoring purchases to iOS devices. Nor do we have issues when macOS purchasers restore to macOS devices. It's only an issue when macOS purchasers restore to iOS devices.
We now advise users experiencing this issue to go through the purchase route on their iOS devices. This will give them an error telling them that they have already purchased this IAP, but then subsequently the IAP seems to be available to restore on the iOS App Store.
This should not be necessary.
Please advise if there's something else we should be doing to fix this long term. I've also raised Feedback on this (FB11733455).