【问题标题】:Restore in app without buying无需购买即可在应用中恢复
【发布时间】:2012-04-13 09:58:36
【问题描述】:

我正在开发一个应用程序,该应用程序还支持一些可以通过应用内购买的功能。我提供了两个按钮,购买和恢复,字面意思。

我有一个非常基本的问题,如果用户按下“恢复”按钮,并且当被要求提供从未购买过应用内可购买产品的凭据中的凭据类型时,该怎么办。我应该如何处理这种情况?我的理解告诉我,当用户按下恢复按钮时,我们会打电话给restoreCompletedTransactions,它将尝试恢复购买的产品,因为在我指的是用户没有购买任何产品的情况下,没有什么可以解锁的。我认为商店工具包会自动处理它并提供购买选项。

这对我不起作用。如果我使用从未购买过应用内产品的帐户并尝试恢复没有响应,则不会调用任何代表。另一方面,如果我使用已购买的帐户进行恢复,则一切正常。

任何帮助将不胜感激。

谢谢。

附:我正在使用测试用户和沙盒环境。

【问题讨论】:

  • 你确定你实现了 - (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error?

标签: ios app-store in-app-purchase itunes storekit


【解决方案1】:

在此处查看答案: iOS in-app-purchase restore returns many transactions

您必须在事务观察器中处理它。

简而言之,您可以通过以下方式开始恢复过程:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

然后调用以下事务观察者:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
    int thisIsTheTotalNumberOfPurchaseToBeRestored = queue.transactions.count;

    for (SKPaymentTransaction *transaction in queue.transactions)
    {
        NSString *thisIsProductIDThatHasAlreadyBeenPurchased = transaction.payment.productIdentifier;

        if([thisIsProductIDThatHasAlreadyBeenPurchased isEqualToString:product1ID])
        {
            //Enable product1 here
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多