当交易在SKPaymentQueue上时,在每次打开时请求密码

时间:2016-05-18 18:43:37

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

我有一个iOS应用,其中包含非消费品IAP Apple托管内容。下载量非常大(约500MB)。

下载内容时,我必须保持交易"打开",并且只有在下载完成后才能完成交易。

问题是,每当我将应用程序从后台移动到前台(或打开应用程序)时,Store Kit将自动请求重新进行身份验证,同时事务在队列中。

因此,如果我开始下载,请按主页按钮,返回应用,Store Kit将要求我登录。

如果我重新登录或只是按"取消"即使重要也没关系,下载将继续。

无论如何都要摆脱这种重新认证请求吗?

1 个答案:

答案 0 :(得分:0)

您可以使用SKPaymentTransactionStateDeferred来避免这种情况。在启动时尝试恢复除SKPaymentTransactionStateDeferred状态之外的所有事务。

<强>目标-C:

NSArray *transactionsInQ = [[SKPaymentQueue defaultQueue] transactions];
for(SKPaymentTransaction *transaction in transactionsInQ) {
    if(transaction.transactionState != SKPaymentTransactionStateDeferred) {
        // your code
    }
}

<强>夫特:

let transactionsInQ = SKPaymentQueue.defaultQueue().transactions
for transaction in transactionsInQ {
    if (transaction.transactionState != .Deferred) {
         // your code
    }
}