mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
InAppPurchases: call purchasesListRestored() callback with failure when a user cancels login to AppStore.
This commit is contained in:
parent
e0088c12b2
commit
0e9db3c403
1 changed files with 22 additions and 0 deletions
|
|
@ -44,6 +44,7 @@ struct SKDelegateAndPaymentObserver
|
|||
|
||||
virtual void didReceiveResponse (SKProductsRequest*, SKProductsResponse*) = 0;
|
||||
virtual void requestDidFinish (SKRequest*) = 0;
|
||||
virtual void requestDidFailWithError (SKRequest*, NSError*) = 0;
|
||||
virtual void updatedTransactions (SKPaymentQueue*, NSArray<SKPaymentTransaction*>*) = 0;
|
||||
virtual void restoreCompletedTransactionsFailedWithError (SKPaymentQueue*, NSError*) = 0;
|
||||
virtual void restoreCompletedTransactionsFinished (SKPaymentQueue*) = 0;
|
||||
|
|
@ -62,6 +63,7 @@ private:
|
|||
|
||||
addMethod (@selector (productsRequest:didReceiveResponse:), didReceiveResponse, "v@:@@");
|
||||
addMethod (@selector (requestDidFinish:), requestDidFinish, "v@:@");
|
||||
addMethod (@selector (request:didFailWithError:), requestDidFailWithError, "v@:@@");
|
||||
addMethod (@selector (paymentQueue:updatedTransactions:), updatedTransactions, "v@:@@");
|
||||
addMethod (@selector (paymentQueue:restoreCompletedTransactionsFailedWithError:), restoreCompletedTransactionsFailedWithError, "v@:@@");
|
||||
addMethod (@selector (paymentQueueRestoreCompletedTransactionsFinished:), restoreCompletedTransactionsFinished, "v@:@");
|
||||
|
|
@ -77,6 +79,7 @@ private:
|
|||
//==============================================================================
|
||||
static void didReceiveResponse (id self, SEL, SKProductsRequest* request, SKProductsResponse* response) { getThis (self).didReceiveResponse (request, response); }
|
||||
static void requestDidFinish (id self, SEL, SKRequest* request) { getThis (self).requestDidFinish (request); }
|
||||
static void requestDidFailWithError (id self, SEL, SKRequest* request, NSError* err) { getThis (self).requestDidFailWithError (request, err); }
|
||||
static void updatedTransactions (id self, SEL, SKPaymentQueue* queue, NSArray<SKPaymentTransaction*>* trans) { getThis (self).updatedTransactions (queue, trans); }
|
||||
static void restoreCompletedTransactionsFailedWithError (id self, SEL, SKPaymentQueue* q, NSError* err) { getThis (self).restoreCompletedTransactionsFailedWithError (q, err); }
|
||||
static void restoreCompletedTransactionsFinished (id self, SEL, SKPaymentQueue* queue) { getThis (self).restoreCompletedTransactionsFinished (queue); }
|
||||
|
|
@ -286,6 +289,25 @@ struct InAppPurchases::Pimpl : public SKDelegateAndPaymentObserver
|
|||
}
|
||||
}
|
||||
|
||||
void requestDidFailWithError (SKRequest* request, NSError* error) override
|
||||
{
|
||||
if (auto receiptRefreshRequest = getAs<SKReceiptRefreshRequest> (request))
|
||||
{
|
||||
for (auto i = 0; i < pendingReceiptRefreshRequests.size(); ++i)
|
||||
{
|
||||
auto& pendingRequest = *pendingReceiptRefreshRequests[i];
|
||||
|
||||
if (pendingRequest.request == receiptRefreshRequest)
|
||||
{
|
||||
auto errorDetails = error != nil ? (", " + nsStringToJuce ([error localizedDescription])) : String ("");
|
||||
owner.listeners.call (&Listener::purchasesListRestored, {}, false, NEEDS_TRANS ("Receipt fetch failed") + errorDetails);
|
||||
pendingReceiptRefreshRequests.remove (i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void updatedTransactions (SKPaymentQueue*, NSArray<SKPaymentTransaction*>* transactions) override
|
||||
{
|
||||
for (SKPaymentTransaction* transaction in transactions)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue