Какой смысл проверять очередь транзакций, если мы можем просто проверить поступления?

#ios #in-app-purchase #receipt-validation

#iOS #покупка в приложении #получение-проверка

Вопрос:

Для Apple при покупке в приложении, похоже, мы должны наблюдать за очередью транзакций:

 for (SKPaymentTransaction *transaction in transactions)  {
  switch (transaction.transactionState) {
      case SKPaymentTransactionStatePurchased:
      ...
}
  

но нам также нужно подтвердить получение (проанализировав содержимое в [[NSBundle mainBundle] appStoreReceiptURL]]; ). Но тогда… можем ли мы просто воспользоваться ярлыком, чтобы напрямую просмотреть квитанцию? В чем разница?

Ответ №1:

Чтобы подтвердить квитанцию, вы должны создать пользовательский сервер и отправить квитанцию на сервер. Также квитанция содержит все транзакции, и вы должны найти в ней последнюю транзакцию, это не очень простой способ показать пользователю какое-либо сообщение о покупке. Я использую транзакции для статистики и для быстрой информации, а квитанцию для подтверждения покупки.
Также вы можете использовать квитанцию для двойной проверки покупки, если квитанция не содержит соответствующей транзакции, вы можете ограничить доступ к содержимому.

Комментарии:

1. Спасибо. Знаете ли вы, что в случае транзакций с автоматическим возобновлением (скажем, ежемесячно) квитанция содержит 1 транзакцию всего или 1 в месяц?

2. В моем приложении есть автоматически возобновляемая подписка, и квитанция содержит разные транзакции за разные периоды (любое продление — это покупка). Если вам нужно определить активный период, вы должны проверить все транзакции и рассчитать период: apple.co/2I39Y29

3. Спасибо! было очень сложно найти информацию, тонны документов только для этого … сумасшедший