paymentQueueRestoreCompletedTransactionsFinished Is called when restore process fails

Hi,


I am woring on error handling logic for In-App Purchases and I'm running into a strange issue.


If I set my iOS device Link Conditioner to 100% loss and then attempt to restore purchases within my app sandbox environment, It never asks the user for an app store password, it then waits a while and then it calls back on -paymentQueueRestoreCompletedTransactionsFinished:queue instead of on - paymentQueue:restoreCompletedTransactionsFailedWithError:


If I turn wifi off completely, then it returns on the correct method (- paymentQueue:restoreCompletedTransactionsFailedWithError:)


The error handling logic works as follows:

If I get a callback on -paymentQueue:restoreCompletedTransactionsFailedWithError:, I present the user with an appropriate error to check their network connection or in-app purchase capabilities.


If I get the callback on -paymentQueueRestoreCompletedTransactionsFinished:queue and then see no purchases, I tell the user that the purchases were restored successfully, however the in-app purhcase was not found and I ask them to buy it.

So its quite concerning when I get a callback on -paymentQueueRestoreCompletedTransactionsFinished:queue when in fact purchases have not beeing restored, because then I give the user incorrect information, and as far as I can tell, I have no way of figuring out when the wrong callback was called. I can only reproduce this issue in one case when the link conditioner is set to 100% failure.


Has anyone seen this issue or have any troubleshooting steps I can take?

Thanks,

Jeff

One solution is to tell the user that


"No previous purchases were found at the App ZStore. If you think that is incorrect, try to restore your previous purchases at another time - sorry. Otherwise, consider purchasing."

thanks for the reply. Not exactly the solution I was hoping for, but it may be the only thing to do. Also, if anyone from Apple sees this, I filed a radar: 23048779. Any help is greatly appreciated.

paymentQueueRestoreCompletedTransactionsFinished Is called when restore process fails
 
 
Q