我在恢复已完成的事务时遇到一些问题。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

我已经添加了几个示例中提到的观察者,我已经尝试添加了paymentQueueRestoreCompletedTransactionsFinished,并且已经有了updatedTransactionspaymentQueueRestoreCompletedTransactionsFinished说我没有交易。
我可以买一个产品,如果我再次尝试购买,它会阻止我说我已经购买了产品,使用这个代码。
SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];

我想我的包标识符可能有问题,但这似乎很好,如果不是这样的话,购买就不起作用了。
我在设备和模拟器上都试过了,但结果是一样的。而且,如果我用的是英国或美国商店也没什么区别。
我真的很想知道为什么这对我不起作用?

最佳答案

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

- (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];
  }
}

09-05 14:06