Obj-C,Storekit restoreCompletedTransactions返回零事务?

时间:2012-04-12 08:31:42

标签: iphone objective-c xcode cocoa-touch storekit

我在恢复已完成的交易时遇到了一些问题。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

我添加了几个示例中提到的观察者,我尝试添加paymentQueueRestoreCompletedTransactionsFinished并且已经有updatedTransactionspaymentQueueRestoreCompletedTransactionsFinished说我没有交易。

我可以购买一件产品,如果我再次尝试购买,它会阻止我并说我已经使用此代码购买了该产品。

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];

我想也许我的捆绑包标识符有问题,但是这看起来不错,如果不是那么买不起作用。

我一直在设备和模拟器上尝试这个,但这有相同的结果。此外,它没有什么区别如果我正在使用英国或美国商店。

我真的抓住了吸管,找出为什么这对我不起作用?

2 个答案:

答案 0 :(得分:9)

尝试这样做并检查数组计数是否也返回零?

- (void) checkPurchasedItems
{
   [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}//You Call This Function

//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
  purchasedItemIDs = [[NSMutableArray alloc] init];

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

答案 1 :(得分:1)

根据docs

  

当您在商店中创建要销售的新产品时,您可以选择是否可以恢复该产品。

所以问题是,您的产品是否配置为允许恢复?