在应用购买完成后可能会收到通知吗?

时间:2013-07-07 15:42:39

标签: iphone ios cocoa-touch in-app-purchase

我想知道,有没有办法注册应用内购买完成时的通知? IE在购买或恢复失败或成功时?我想处理这四种情况,因此我可以在应用程序购买发生的视图控制器中向用户显示警报。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

(void)paymentQueue:updatedTransactions:在事务状态更新时调用。您可以在完成交易时显示警报窗口。

- (void) purchaseItem:(SKProduct *) item
{
    NSLog(@"Purchasing item %@", item.localizedTitle);
    SKPayment *payment = [SKPayment paymentWithProduct:item];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
}

- (void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction *transaction in transactions)
    {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:
                [self completeTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:
                [self failedTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:
                [self restoreTransaction:transaction];
                break;
            default:
                break;
        }
    }
}

- (void) completeTransaction:(SKPaymentTransaction *) transaction
{
    [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Transaction"
                                                message:@"Your purchase is complete"
                                                 delegate:nil
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:nil];
    [message show];

    // or 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(finishTransactionSuccessfully:) name:PURCHASE_NOTE object:nil];
}