Knowing when user has pressed cancel buttons during In-App purchase

蓝咒 提交于 2020-01-12 09:16:13

问题


I am writing code for in-app purchases and using a "Processing..." view with an activity indicator to block the "Buy Now" button once a purchase is initiated. However, how can you tell when the user hits a "Cancel" button since those alert views are coming from the AppStore.app?

Is there a delegate method that gets called when those cancel buttons are pressed? Or is it a matter of your view becoming firstResponder again? What am I missing here?

If you don't think this is possible, have a look at the "I Am T-Pain" app... they do something very similar and dismiss their view immediately after the cancel button is pressed.


回答1:


Assuming everything is setup correctly you should have an object implementing SKPaymentTransactionObserver which will receive callbacks for transaction success/failure/cancel.

In my example it's the purchaseManager object mentioned in this call

  [[SKPaymentQueue defaultQueue] addTransactionObserver:purchaseManager];

When the user cancels a payment you should receive a callback with a transaction state of cancelled:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {

        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;

            case SKPaymentTransactionStateFailed:
                // THIS IS THE STATE YOU SHOULD SEE
                [self failedTransaction:transaction];
                break;

                           ...
}

You can use this callback to dismiss your view etc...



来源:https://stackoverflow.com/questions/3472627/knowing-when-user-has-pressed-cancel-buttons-during-in-app-purchase

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!