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