iphone - 应用内购买完成后是否可以收到通知?

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

我想知道,有没有办法注册应用内购买完成时的通知?购买或恢复IE时要么失败要么成功?我想处理这四种情况,以便我可以在发生应用内购买的 View Controller 中向用户显示警报。有谁知道如何做到这一点?

最佳答案

(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];
}

关于iphone - 应用内购买完成后是否可以收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513595/

相关文章:

iphone - 在 iOS 上应用带通滤波器

ios - 恢复应用程序时重新加载 ViewController

ios - 更新到 Xcode 13,尝试在 iOS 但不是 macOS 上运行 SwiftUI 应用程序时获得唯一的错误代码

objective-c - 尝试制作 sqlite 的可写副本时出现错误

ios - 核心数据输入数字 > 1.0 错误

ios - IBOutlet 对代码没有反应

iphone - iOS 崩溃日志捕获、调试信息...捕获并通过电子邮件发送给开发团队

iphone - 如何从 iOS 上的主机名解析 IP 地址

ios - UISlider值将 float 转换为百分比

ios - 通过 UIWebView 实现 Google 自定义搜索