Obj-C, Storekit restoreCompletedTransactions возвращает нулевые транзакции?

У меня возникли проблемы с восстановлением завершенных транзакций.

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Я добавил наблюдателя, упомянутого в нескольких примерах, я попытался добавить paymentQueueRestoreCompletedTransactionsFinished и уже иметь updatedTransactions. paymentQueueRestoreCompletedTransactionsFinished говорит, что у меня нулевые транзакции.

Я могу купить продукт, и если я попытаюсь купить его снова, он остановит меня и говорит, что я уже купил продукт, используя этот код.

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

Я думал, может быть, у меня была проблема с идентификатором моего пакета, но это кажется прекрасным, и покупка не будет работать, если это не так.

Я пробовал это на устройстве, а также на симуляторе, но это имеет тот же результат. Кроме того, это не имеет значения. Если я использую британский или американский магазин.

Я действительно хватаюсь за соломинку, чтобы узнать, почему это не работает для меня?

Ответы

Ответ 1

попробуйте сделать это так и проверьте количество массивов, также оно возвращает нуль?

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

Ответ 2

В соответствии с docs:

Когда вы создаете новый продукт для продажи в своем магазине, вы выбираете, можно ли восстановить этот продукт или нет.

Итак, вопрос в том, настроен ли ваш продукт на восстановление?