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

Jul*_*les 14 iphone xcode cocoa-touch objective-c storekit

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

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Run Code Online (Sandbox Code Playgroud)

我添加了几个例子中提到的观察者,我已经尝试过添加paymentQueueRestoreCompletedTransactionsFinished并且已经有了updatedTransactions.paymentQueueRestoreCompletedTransactionsFinished说没有交易.

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

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier];
[[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)

我想也许我的捆绑标识符有问题,但这看起来很好,如果不是,购买将不起作用.

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

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

Mal*_*ndi 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];
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您不必在`for`循环中填充`NSMutableDictionary`.你可以做`purchaseItemIDs = [queue.transactions valueForKeyPath:@"payment.productIdentifier"]` (2认同)