在iOS中恢复购买

我正在恢复购买,所以我有一些疑问

1)如何显示恢复button

我已经在左上angular显示了它,点击它就可以调用这个函数

- (IBAction)restorePurchases:(id)sender { [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; } 

但是,如果用户没有购买任何项目,或者如果用户已经购买了一个项目但没有删除并重新安装了应用程序,该怎么办?是否还需要显示restoreButton,如果是,点击它应该是什么行为。

2)现在,如果我已经购买一个项目,并删除应用程序,并重新安装应用程序,并点击恢复button,它调用此function

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

但现在,假设我不是anyitem,只需点击恢复button,它要求我为我的苹果ID,进入苹果ID后,没有任何反应,它不调用上述function,我想知道为什么发生这种情况。

此外,我想显示一条消息给用户,没有项目要恢复,所以我该怎么做。

我search了这一点,他们是一个委托函数将被调用,如果没有交易retore

 - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { } 

我所做的是在这里我检查了是否没有项目要恢复,我将显示为没有项目来恢复,是否我正确的方法。

关心Ranjit

直接从Store Kit Header File

//asynchronous。 将当前用户的已完成事务添加回队列以重新完成。 用户将被要求authentication。 观察者将会收到0或更多的-paymentQueue:updatedTransactions :,后面是-paymentQueueRestoreCompletedTransactionsFinished:成功或-paymentQueue:restoreCompletedTransactionsFailedWithError:失败。 在部分成功的情况下,一些交易仍可能交付。

 - (void)restoreCompletedTransactions __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);