如何在用户删除并重新安装应用程序时检查购买的功能(InApp购买)?

时间:2016-04-22 05:59:50

标签: ios in-app-purchase

我正在开发一个包含InApp购买功能的项目。我完成了它并且当用户购买该功能时我在NSUserDefault存储了一个密钥,如果用户已经购买了该密钥,则检查该密钥以解锁应用程序的功能。但现在的问题是如果用户删除应用程序并重新安装它,那么NSUserDefault的所有数据都将被删除。那么在这种情况下检查解锁功能的解决方案是什么?请告诉我可能的解决方案。

谢谢!

2 个答案:

答案 0 :(得分:0)

- (IBAction)RestoreBtnClicked:(id)sender
{

 [[SKPaymentQueue defaultQueue] addTransactionObserver:self];

  [[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
}


// Then this is called

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

    NSLog(@"%@",queue );

    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);


    NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];

    NSLog(@"received restored transactions: %i", queue.transactions.count);

    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
    @"Purchase Restored" message:nil delegate:
        self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
    [alertView show];


  for (SKPaymentTransaction *transaction in queue.transactions) {

        NSString *productID = transaction.payment.productIdentifier;

        [purchasedItemIDs addObject:productID];

        NSLog (@"product id is %@" , productID);

        // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
    }
}

答案 1 :(得分:0)

当您将应用程序提交到AppStore时,很可能会被拒绝,因为您的解决方案无法使用相同的Apple ID在不同设备上恢复用户的IAP。您有责任将此功能添加到应用程序。它可能会根据您的UI流程自动或根据用户的需求发生。

在开始实施之前,请阅读相关的Apple Documentation

检查用户是否已购买某项功能后,您可以按照建议使用NSUserDefaults进行存储,这样您就可以在启动之间保存应用状态。

这是一种最常见且常用的方法。