2016-04-22 38 views
0

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

谢谢!

+0

您可以使用恢复应用购买选项 –

+0

您必须提供恢复应用购买选项,否则您的应用将被拒绝。 – Paddy

+0

我已经恢复交易,但现在的问题是如何检查用户是否已经购买了功能或不在发布时为了解锁功能? – Kirti

回答

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} 
    } 
} 
+0

@ Shangari ..我已经恢复了交易,但现在的问题是如何检查用户是否已经在发布时购买了该功能以便解锁该功能? – Kirti

0

当你提交你的应用在AppStore,最有可能会被拒绝,因为您的解决方案不提供恢复使用相同的Apple ID不同设备的用户的单边行动计划的能力。您有责任将此功能添加到应用程序。根据您的用户界面流程,它可能会自动发生或根据用户的需求发生。

之前开始实施,阅读有关Apple Documentation

您检查用户已经购买你提出使用NSUserDefaults的做,你可以存储它的功能后,会给你节省发射之间的应用程序状态的能力。

这是最常见和最常用的方法。