Ответ 1
Есть ответ от разработчика Apple (Рич Кубота) О тестировании подписки в среде песочницы.
Это ошибка в процессе симуляции покупки в приложении. Не поддерживается способ моделирования процесса отмены или управления процессом подписки из пользовательского приложения iTunes. Это ограничение также существует в версии приложения TestFlight. Когда вы отправляете сборку приложения TestFlight пользователю, и он тестирует приложение, учетная запись пользователя фактически работает в среде песочницы. Вы убедились в этом, поскольку приложение TestFlight не будет отображаться как управляемое приложение в разделе управляемой подписки iTunes для пользователей TestFlight. Это потому, что приложение находится в среде песочницы, о которой приложение iTunes ничего не знает.
С тех пор, как я ответил на этом форуме, прошло некоторое время, но лучший способ проверить, будет ли приложение обрабатывать процесс автообновления, - это убедиться, что приложение также обрабатывает обнаружение автообновления подписок через транзакцию правильно., Например, если вы покупаете 1 месяц подписки в среде песочницы. Затем завершите работу приложения, подождите 6 минут, затем перезапустите приложение, обнаружит ли транзакция serverObserver наличие незавершенной транзакции (сжатое продление за один месяц) для обработки.
Это очень похоже на то, что происходит в случае, когда пользователь перезапускает подписку на странице управления подписками iTunes. Транзакция записывается в магазине iTunes, и включена незавершенная транзакция для учетной записи пользователя/идентификатора пакета приложения. Когда приложение запускается и активируетactionObserver (посредством вызова addTransactionObserver), обнаруживается incompleteTransaction и вызывается метод updatedfransaction deletefgate для обработки обновления. Затем приложение может проверить applicationReceipt, чтобы убедиться, что теперь есть элемент массива in_app для элемента автообновления подписки, у которого значение expire_date больше текущей даты и что активная функция автообновления подписки product_id активна.
Что касается проверки того, что автоматическое продление подписки было отменено, то для симуляции требуется поддержка сервера iTunes Store. Однако процесс проверки квитанции работает ежедневно и может определить, какой элемент массива in_app является наиболее актуальным для автообновления подписки, а затем обнаружение, если установлена опция cancel_date, сообщает приложению, что подписка была отменена. Как примечание, просто обнаружение, что поле cancel_date для любого элемента может привести к ложному положительному результату. Пользователь, возможно, отменил автоматическое продление подписки ранее, а затем решил, что это не так уж и плохо, и повторно приобрел товар. По этой причине логике необходимо убедиться, что поле cancel_date установлено в самом текущем элементе массива in_app, чтобы знать, что текущая подписка действительно была отменена. Одна проблема, которую я пытаюсь определить - будет ли перемещенный элемент expire_date перемещен вверх до cancel_date, чтобы отмененная подписка могла выглядеть так же, как и просроченная подписка. Похоже, правильный ход - но эта информация контролируется командой сервера iTunes Store.
Если вы хотите использовать механизм моделирования этих функций среды производственного хранилища в изолированной программной среде, я предлагаю вам отправить запрос на улучшение с помощью веб-страницы отчета Apple Developer Bug Report. Пожалуйста, выберите продукт iTunesConnect для отчета об ошибке, так как это предложение для iTunes Store, а не iOS.