在没有互联网连接的情况下在iOS中进行IAP

时间:2014-02-24 01:47:17

标签: ios objective-c in-app-purchase

我的标题可能会产生误导,但我想问的是,如果用户在进行IAP时没有任何互联网访问权限,代表是否有任何错误?

目前我已经实现了这个委托,但是当用户点击购买IAP时它不会被调用:

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

如果用户尝试在没有连接的情况下购买IAP,我该如何处理此问题? 我想检测错误并向用户显示一条警告消息,告诉他需要连接互联网。

1 个答案:

答案 0 :(得分:0)

有一个单独的委托调用来响应恢复过程中的失败(在网络出现故障时应该返回错误):

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

无论如何,您应该在显示可能的购买时请求更新的SKProduct信息。 SKRequest上有一个失败的委托方法:

- (void)request:(SKRequest *)request didFailWithError:(NSError *)error

否则,您需要使用Reachability或其他内容来确定用户在显示产品和购买之间是否脱机。

抱歉,这不能更好地回答您的问题。我认为简单的答案是"没有"。可能应该有一个但在正常情况下似乎没有必要。