2016-06-10 169 views
0

IOS应用程式内购买如何知道这个产品已经购买(我可以nsuserdefault检查这个地方,但如何从手机中取出应用程序后,知道再重新安装应用程序)IOS应用程式内购买收据

https://developer.apple.com/library/ios/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1

+0

你必须提供一个恢复的购买按钮。这将允许用户恢复非消费型和订购型购买。 – Paulw11

+0

通过[this](https://www.raywenderlich.com/36270/in-app-purchases-non-renewing-subscription-tutorial) –

+0

@ Paulw11谢谢朋友,我用它,但我怎么知道这个购买相同应用程序ID(或由此特定电话购买) – saurabh

回答

1

您可以收到以这种方式(从 Read the Receipt Data):

// Load the receipt from the app bundle. 
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; 
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL]; 
if (!receipt) { /* No local receipt -- handle the error. */ } 

如果用户删除的应用程序,你必须提供一种方法来恢复购买。

你可以做这样的事情:

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

// Then this is called 
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { 

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

    for (SKPaymentTransaction *transaction in queue.transactions) { 
     NSString *productID = transaction.payment.productIdentifier; 
     [purchasedItemIDs addObject:productID]; 
     NSLog(@"product id is %@", productID); 
    } 
}