我正在开发一个包含InApp购买功能的项目。我完成了它并且当用户购买该功能时我在NSUserDefault
存储了一个密钥,如果用户已经购买了该密钥,则检查该密钥以解锁应用程序的功能。但现在的问题是如果用户删除应用程序并重新安装它,那么NSUserDefault
的所有数据都将被删除。那么在这种情况下检查解锁功能的解决方案是什么?请告诉我可能的解决方案。
谢谢!
答案 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进行存储,这样您就可以在启动之间保存应用状态。
这是一种最常见且常用的方法。