在应用内购买中恢复功能

时间:2012-12-17 06:32:17

标签: objective-c ios in-app-purchase

我在我的应用程序中使用应用内购买。一切都很好。 用户可以正确购买,恢复交易。

我在恢复功能中有1个问题:

我如何实施 - 用户无法在不购买任何商品的情况下进行恢复,因为当用户点击恢复按钮而不购买任何商品时,则会进行恢复,应用程序将被阻止。

2 个答案:

答案 0 :(得分:2)

无需实施网络服务,只需几行代码即可解决问题 -

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
int totalNumberOfPurchaseToBeRestored = queue.transactions.count;
if (totalNumberOfPurchaseToBeRestored == 0)
{
    //No item found for Restore"
}
else
{
        // Restore items
}

}

答案 1 :(得分:1)

当您的交易完成后,请更新ProductPurchased。并在viewDidLoad&中检查ProductPurchased的值。相应地设置恢复按钮。请查看以下代码,这些代码可能会对您有所帮助。让我知道。

if([[[NSUserDefaults standardUserDefaults]valueForKey:@"ProductPurchased"]intValue]==1)
       restoreButton.hidden=YES;

在还原事务完成事务方法中编写以下代码。

- (void)restoreTransaction:(SKPaymentTransaction *)transaction
{
   if([[NSUserDefaults standardUserDefaults] valueForKey:@"ProductPurchased"] == 0)
        [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"ProductPurchased"];
   self.viewController.restoreButton.hidden=YES;
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction
{
   if([[NSUserDefaults standardUserDefaults] valueForKey:@"ProductPurchased"] == 0)
        [[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"ProductPurchased"];
   self.viewController.restoreButton.hidden=YES;
}