对于由于中断(来电等)导致的未完成交易,我在重新启动应用程序时收到更新,因为我正在向支付队列添加观察者。但是,我如何知道哪些是通过线路发送的交易。我试过这个
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchasing:
//Show a loading View
NSLog(@"Purchase Ongoing");
break;
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
}
}
-(void) completeTransaction:(SKPaymentTransaction *) transaction
{
NSString *productIdentifier = transaction.originalTransaction.payment.productIdentifier;
NSLog (productIdentifier);
//this line doesn't log anything. I run it in debug mode and I see productIdentifier as InvalidCFString (0x0). I guess it's nill.
}
这是因为在我的应用被杀之前我无法正常完成交易。在查杀之后,我确实收到了来自Apple的In-App购买成功的消息。只是在我的应用被杀之前我无法完成交易。该交易当时正在进行中。在应用程序被杀之前,试图强制完成事务会导致应用程序崩溃,因为我还没有收到SKPaymentTransactionStatePurchased通知,因此无法完成正在进行的事务。
现在,当我重新启动时,我得到了一些响应,但我无法读取它并解锁我必须使用的功能,因为金额已经记入用户的itunes帐户。如何解决这个问题?
提前致谢。