在iOS中恢复购买

时间:2013-02-20 07:55:34

标签: ios ios5 ios6 in-app-purchase

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

1)如何显示恢复按钮

我已经在左上角显示了它,点击它我称之为

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

    }

但是如果用户没有购买任何商品或者如果用户购买了商品但未删除并重新安装应用程序该怎么办?如果我仍然需要显示restoreButton,如果是,则点击它应该是什么行为。

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之后,没有任何反应,它没有调用上述功能,我想知道为什么会这样。< / p>

另外,我想向用户显示一条消息,表示没有要恢复的项目,所以我该怎么办呢。

我搜索了这个并且他们是一个委托函数,如果没有要复制的交易将被调用

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

}

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

此致 兰吉特

1 个答案:

答案 0 :(得分:0)

直接来自Store Kit Header File

  

//异步。将为当前用户添加已完成的事务   回到队列重新完成。将要求用户   认证。观察员将获得0或更多   -paymentQueue:updatedTransactions :,后跟-paymentQueueRestoreCompletedTransactionsFinished:成功或-paymentQueue:restoreCompletedTransactionsFailedWithError:失败。在部分成功的情况下,某些交易可能仍然存在   递送

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