我在让应用内购买生效时遇到问题。每次我创建一个新的测试用户并在我的 iPhone 上调试它时,我会自动得到“你已经购买了这个但它还没有被下载”。
我已将此添加到我的 viewDidLoad 中:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
我的购买功能如下所示:
- (IBAction)purchaseProduct:(id)sender {
SKProduct *product = [productArray objectAtIndex:0];
SKPayment *payment = [SKPayment paymentWithProduct:product];
[[SKPaymentQueue defaultQueue] addPayment:payment];
}
我也有:
-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions) {
if ([transaction transactionState] == SKPaymentTransactionStatePurchased) {
[self transactionDidComplete:transaction];
} else if ([transaction transactionState] == SKPaymentTransactionStateFailed) {
[self transactionDidFail:transaction];
} else if ([transaction transactionState] == SKPaymentTransactionStateRestored) {
[self transactionDidRestore:transaction];
} else {
NSLog(@"Unhandled case: %@", transaction);
}
}
}
一旦我点击购买按钮,甚至没有输入我的测试用户帐户密码,我就会收到此错误:
Unhandled case: <SKPaymentTransaction: 0x25a9a0>
这意味着,我假设在我输入密码并点击“确定”进行购买之前调用了支付队列!
我在函数“transactionDidComplete、transactiondidFail、transactionDidRestore”中有下面的代码
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];