1

我正在努力恢复购买,所以我几乎没有疑问

1) 如何显示恢复按钮

我在左上角显示了它,点击它我调用这个函数

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

    }

但是,如果用户没有购买任何物品,或者如果用户购买了物品但没有删除并重新安装应用程序,我是否仍然需要显示恢复按钮,如果是,点击它应该是什么行为。

2)现在,如果我购买了一个项目并删除了应用程序并重新安装了应用程序,然后单击恢复按钮,它会调用此函数

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

但是现在,假设我没有任何项目,只需单击恢复按钮,它会询问我的苹果 ID,输入苹果 ID 后,没有任何反应,它没有调用上述函数,我想知道为什么会这样。

另外,我想向用户显示没有要恢复的项目的消息,那么我该怎么做。

我搜索了这个,如果没有要恢复的事务,它们是一个将被调用的委托函数

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

}

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

问候兰吉特

4

1 回答 1

0

直接来自Store Kit Header File

// 异步。将当前用户的已完成事务添加回待重新完成的队列。将要求用户进行身份验证。观察者将收到 0 个或多个 -paymentQueue:updatedTransactions:,然后是 -paymentQueueRestoreCompletedTransactionsFinished: 成功或 -paymentQueue:restoreCompletedTransactionsFailedWithError: 失败。在部分成功的情况下,一些交易可能仍会交付。

- (void)restoreCompletedTransactions  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
于 2013-02-21T07:06:55.927 回答