下面是我的问题:

当使用storekit用于应用内购买,我显示“加载”视图告诉用户要等待几秒钟,而过程正在进行中;但让我们说这个相同的用户,当storekit向他要itunes账号密码,按下“取消”按钮...我如何“捕获”这一事件,以隐藏加载看法?

恐怕这可能是因为用户的通信驳回苹果的原因是非常重要的。

感谢您的任何提示!

编辑:我不是在这里的交易;我的第一步是要恢复完成的事务,以便密码提示是触发通过该方法:

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]
有帮助吗?

解决方案

类似的东西被报道在苹果开发论坛。

当用户点击询问恢复后取消,会发生什么......

在他们的情况下,复制和粘贴从创建的文档的方法的,如果没有错误显然编译的一个错误。

// wrong, but compiles
- (void)paymentQueue:(SKPaymentQueue *)queuerestoreCompletedTransactionsFailedWithError:(NSError *)error

,而不是

// correct
- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error

如果您的观察方法看起来像上面的第一个,那么你很可能没有收到关于恢复操作的失败消息。

更新

在SDK文档SKPaymentTransactionObserver,我看到OS 3.1(2009-11-17),但3.0文档(2009-05-01)的恢复故障方法似乎不拥有它。奇怪,因为3.1 DOC指出这观察者方法是“可用于iPhone OS 3.0和更高”。

要得到肯定。我检查了我的iPhoneOS3.0.sdk /系统/资源库/框架/ StoreKit.framework /头/ SKPaymentQueue.h的副本,以确保恢复失败观测方法是存在的。 (这是)

其他提示

如果用户点击了取消按钮然后请求将失败 - 使用一个存储观察者像这样...

MyStoreObserver *observer = [[MyStoreObserver alloc] init];
[[SKPaymentQueue defaultQueue] addTransactionObserver:observer];

和手柄这样....

- (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];
            default:
                break;
        }
    }
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top