3
인앱 구매를위한 프로젝트를 빌드합니다. 내가 지불을 추가하고 샌드 박스에서 구매를 할 수finishTransaction : does not work
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
NSLog(@"paymentQueue update");
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
[self restoreTransaction:transaction];
default:
break;
}
}
}
- (void) completeTransaction: (SKPaymentTransaction *)transaction
{
NSLog(@"completeTransaction");
// Your application should implement these two methods.
[self recordTransaction: transaction];
[self provideContent: transaction.payment.productIdentifier];
// Remove the transaction from the payment queue.
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void) restoreTransaction: (SKPaymentTransaction *)transaction
{
NSLog(@"restoreTransaction");
[self recordTransaction: transaction];
[self provideContent: transaction.originalTransaction.payment.productIdentifier];
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
- (void) failedTransaction: (SKPaymentTransaction *)transaction
{
NSLog(@"failedTransaction");
if (transaction.error.code != SKErrorPaymentCancelled)
{
// Optionally, display an error here.
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
//Optional, record the transaction infomation
- (void) recordTransaction: (SKPaymentTransaction *)transaction{
receipt=transaction.transactionReceipt;
[[NSUserDefaults standardUserDefaults] setValue:transaction.transactionReceipt forKey:@"proUpgradeTransactionReceipt" ];
[[NSUserDefaults standardUserDefaults] synchronize];
[self sendReceipt:receipt];
expiredTime=transaction.transactionDate;
}
성공적으로
하지만 완성 된 트랜잭션이 실행 finishTransaction:
후 defaultQueue에서 제거되지 않습니다 : 소스 코드 울부 짖는 소리의 부분이 있습니다.
결제를 추가하면 defaultQueue가 누적됩니다.
실수를 저 지르지 않았습니까?
도움 주셔서 감사합니다.