Так, коллеги и Иван или Алексей в частности, нужна помощь опытных, тк история с валидацией закончилась не так как я хотел :
-
Ситуация:
выпустил приложение со встроенной покупкой. Прикрутил валидацию по файлам Бенкрофта как в курсе. Так уже делал до этого в первом приложении и проблем не было, но теперь что-то не так…
-
В чём собственно дело:
В коде при запуске проверял валидность чека при помощи Receipt Validator от Бенкрофта. По результату проверки при .succes
записывал в ЮзерДефолтс (UD) bool
и потом от неё отталкивался для доступа к платным фичам. Переодически проверял чек для актуализации параметра в UD. - в общем всё как по курсу.
Но теперь (возможно из-за новой iOS или ещё каких-то обновлений) валидатор похоже работает некорректно: при запуске приложения валидатор при проверке чека выдаёт кейс .succes
, даже если вы не покупали приложение! При этом в ТЕСТОВОЙ среде он срабатывает корректно! И всё отрабатывало при бета-тесте как надо - первоначально false
по нужному ключу в UD, потом покупка, проверка, кейс .succes
и true
в нужном ключе.
Потом выкладываение в appStore и уже при реальной проверке валидатор при отсутсвии чека(покупки) выдавал .succes
… Я проверял по-всякому: удалял апп (ведь при его удалении чиститься UD) и ставил снова - та же фигня. Сначала подумал может из-за бета-теста как-то сохранились данные о покупке (хз как) на этих учётках, а проверял апп на 3х учётках, которые как раз были тестерами. Создал полностью новую учётку, полностью сбросил тестовый девайс, и там было то же самое - валидатор видимо выдал .succes
и с первого запуска приложения были доступны все фичи…
- Решение:
Решил пока банально - убрал вообще валидацию и оставил просто запись данных в UD при штатных транзакциях SK: при успешной и восстановлении просто пишу сразу в UD и не проверяю потом - небезопасно да и пофиг. И всё заработало: новый акк не видел покупки, которой не было…
Возможно что-то я намудрил, но дело в том, что код был точно такой же как раньше, когда на первом приложении всё нормально работало! Я ещё раз проверил по курсу. Да и так понятно уже что как.
Мне кажется, что Эппл всё-таки как-то изменили возвращаемые цеки в угоду безопасности, и поэтому валидатор неправильно обрабатывает их и выдаёт всегда .succes
на любой запрос.
Просьба опытных коллег проверить, кто пользуется этим валидатором и сообщить результаты. Я для себя решил пока его не использовать. И покурить раздел Validating Purchases в доках по StoreKit, но первоночально понятно, что Эппл настоятельно рекомендуют делать валидацию самому на удалённом сервере
От коллег хотелось проверки инфы и редактирования курса, если вдруг это так