Кто-нибудь придумал лучшие практики для использования restoreCompletedTransactions
SKPaymentQueue для базового приложения с нерасходуемыми внутриигровыми покупками?
Наблюдения
Я знаю, что рекомендуется всегда регистрировать наблюдателя транзакций, чтобы получать ожидающие транзакции, которые возвращаются в приложение, но это другой вопрос. Похоже, restoreCompletedTransactions
- это то, что приложение должно активно решать, когда звонить для опроса всех покупок, которые клиент уже сделал.
Насколько я могу судить, этот метод предназначен для получения покупок, которые могли быть потеряны. Например, клиент может установить или переместить приложение на новое устройство таким образом, чтобы локальные записи приложения о предыдущих платежах были потеряны или сброшены.
Обеспокоенность
Что мне не ясно, так это как надежно автоматически определять это условие (т.е. как решить, когда проводить опрос на предмет пропущенных покупок). Я не хочу облажаться и рискнуть лишить клиента доступа к функциям, за которые они уже заплатили.
В то же время я не хочу звонить restoreCompletedTransactions
каждый раз, когда приложение запускается, на всякий случай и в основном возвращать транзакции, о которых я уже знаю, примерно в 99,9% случаев. (За исключением покупок в приложении, мое приложение действительно не требует подключения к сети.)
Примечания
В документации Apple уточняется, что с клиентов не взимается дополнительная плата за уже сделанные покупки нерасходуемых материалов. Если они попытаются совершить повторную покупку, платежная транзакция все равно будет отправлена в приложение.
В худшем случае покупатель может восстановить покупки таким образом, но я бы все же не хотел, чтобы он пошел по пути, напоминающему повторную покупку того, за что он уже заплатил.