[quote]
On platforms that support it (e.g. Google Play and Universal Windows Applications) Unity IAP automatically restores any products the user owns during the first initialization following reinstallation; the ProcessPurchase method of your IStoreListener will be called for each owned item.
[/quote] (Unity - Manual: Restoring Transactions)
Consider a user (Bob) with 2 devices: DeviceA and DeviceB. Bob has a single GooglePlay account and logs in with this account on both DeviceA and DeviceB. Bob opens my app on DeviceA and purchases a Subscription (newspaper access). My app receives a processPurchase call and the purchase is completed successfully on DeviceA. Bob is correctly granted newspaper access on DeviceA. Bob then opens my app on DeviceB (Bob is logged into the same GooglePlay account).
I have the following questions about what happens next:
Does my app receive a processPurchase call on DeviceB for the newspaper access subscription?
How is this implemented under the hood? Is Unity relying on queryPurchase (gets cached purchases on the device) or queryPurchaseHistoryAsync (fetches all purchases for the GooglePlay account)?
Yes, this is the way it is SUPPOSED to work! However, restore across two devices is currently not working, we are hoping to fix this in the next release. And yes, on device B during IAP initialization, you would expect to see ProcessPurchase fire for your subscription that was previously purchased on device A.
Thanks a lot for the quick and insightful response. This is great to hear. We recently encountered this issue in our app. We were working on our own native Android plugin as a workaround. I know it’s really hard to say when it comes to something like this, but if you could give a rough ETA on when this would be implemented, that would be immensely helpful!