我已经在我的应用程序中实现了应用程序内购买,对此我有两个问题。这是我使用的代码:
- (IBAction)buyProduct1:(id)sender {
SKPayment *payment = [SKPayment paymentWithProduct:product1];
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
- (IBAction)restorePurchases:(id)sender {
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
for (SKPaymentTransaction *transaction in transactions) {
switch (transaction.transactionState) {
case SKPaymentTransactionStatePurchasing:
break;
case SKPaymentTransactionStatePurchased:
//Can I be 100% sure that this method is only called when the product is bought?
[self product1Bought:transaction];
break;
case SKPaymentTransactionStateRestored:
//What code should I have here to safely restore product1 if the product is bought?
break;
case SKPaymentTransactionStateFailed:
break;
default:
break;
}
}
}
- (void)product1Bought:(SKPaymentTransaction *)transaction {
NSString *string = @"Product1";
[[NSUserDefaults standardUserDefaults] setObject:string forKey:@"Product1"];
NSLog(@"Product1 is bought");
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
}
1.我只是想知道我是否可以 100% 确定 productBought 方法仅在成功购买后调用,而不是在发生任何奇怪的事情并且产品没有真正购买时调用?
2.如何检查product1是否较早购买,以便调用product1Bought方法?