在没有购买的应用程序中恢复

在没有购买的应用程序中恢复

问题描述:

我正在开发一款应用程序,该应用程序还支持通过应用程序内购买的一些功能。我提供了两个按钮,即Buy和Restore,意思是字面意思。在没有购买的应用程序中恢复

我有一个非常基本的问题,如果用户按下恢复按钮,并且在从未购买应用内可购买产品的凭证中询问凭证类型时该怎么办。我应该如何处理这种情况?我的理解告诉我,当用户按下恢复按钮时,我们拨打电话restoreCompletedTransactions,这将尝试恢复购买的产品,因为在我提到的情况下,用户没有购买任何产品,没有任何解锁。我认为商店套件会自动处理,并提供购买选项。

这不是为我工作。如果我使用的是从未购买应用内商品的帐户,并尝试进行还原,但没有响应,则不会调用任何代理。另一方面,如果我使用已购买的账户进行恢复,那么事情会很好。

任何帮助将非常感激。

谢谢。

P.S.我正在使用测试用户和沙盒环境。

+0

你确定你实现 - (空)paymentQueue:(SKPaymentQueue *)队列restoreCompletedTransactionsFailedWithError:(NSError *)错误? – 2012-03-31 08:57:14

在这里看到了答案: 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 
     } 
    } 
}