Подписка на автоматическое продление подписки на среду песочницы iOS

У меня есть следующие вопросы относительно автоматически возобновляемых подписок iOS

a) Действительно ли автоматическое продление подписки обновляется автоматически в среде песочницы? Проблема, похоже, в том, что подписки не обновляются автоматически, хотя в документации сказано, что даже в среде песочницы это должно происходить 6 раз.

б) Нужно ли нам вызывать restoreCompletedTransactions, чтобы получить новую квитанцию ​​для автоматически расширенной подписки, или это -paymentQueue: updatedTransactions: метод, который автоматически вызывается iOS? (Я предполагаю, что он автоматически вызвал «запуск» и «вращение вне фона», не уверен)

c) Как вы использовали одну и ту же подписку на нескольких устройствах? С этим можно справиться с помощью restoreCompletedTransactions, но при его вызове пользователю будет предложен пароль, поэтому вызывать его каждый раз при запуске приложения не очень удобно.


person 2cupsOfTech    schedule 07.11.2011    source источник


Ответы (2)


а) Автоматическое продление подписок несовместимо в среде песочницы. Иногда подписка продлевается несколько раз (около 5) до окончания. В других случаях он вообще не продлится.

б) (только квитанции транзакций iOS6) Вам не нужно звонить restoreCompletedTransactions, чтобы проверить статус подписки, если вы храните предыдущие квитанции (желательно на вашем сервере). Просто возьмите любую квитанцию ​​о подписке, которую вы сохранили для этого пользователя, и отправьте ее в App Store для проверки. Они ответят latest_receipt_info, включая expires_date, который вы можете использовать для определения текущего статуса подписки.

c) Вы должны предложить новым пользователям «Восстановить предыдущие покупки», после чего вы вызываете restoreCompletedTransactions. Затем отправьте одну из этих квитанций (желательно с вашего сервера) в App Store для проверки, чтобы получить расшифрованные данные о транзакции. Найдите ключ original_transaction_id в информации о квитанции. Он всегда будет содержать идентификатор самого первого раза, когда этот пользователь инициировал подписку с вами. Если вы сравните этот идентификатор с другими в вашей системе, вы сможете определить, какие устройства используют учетную запись Apple. (Поскольку Apple не позволяет видеть Apple ID пользователя, это лучший способ идентифицировать учетную запись, охватывающую несколько устройств).

Аналогично этому вопросу: Срок действия автоматического продления iOS истек в конце текущего периода подписки

person Andrew    schedule 06.12.2011
comment
удален и добавлен как новый ответ - person AndyRyan; 18.02.2016
comment
@andrew При тестировании покупки в приложении в песочнице у меня было куплено 2 продукта в одной группе. Я думаю, что нужно подписываться только на последнюю, а другие в той же группе отменять автоматически. Это? Если да, то почему я получил 2 покупных продукта в одной группе? - person EI Captain v2.0; 11.03.2019
comment
Что касается вашего пункта а), это, вероятно, связано с тем, что существует ограничение на 5 обновлений каждые 8 ​​часов для каждого входа в тестер песочницы - person Brad Thomas; 09.04.2019
comment
@BradThomas, у вас есть документация по этому поводу? Было бы очень хорошо иметь какое-то правило, подобное этому, вместо моего текущего лучшего понимания, что песочница является мусором и ненадежна для тестирования. - person Meekohi; 24.05.2021
comment
@Meekohi У меня нет под рукой ссылки, мне пришлось бы просто погуглить, как и вы. Но я почти уверен, что нашел надежную ссылку для этих цифр, если я правильно помню. - person Brad Thomas; 24.05.2021

Чтобы добавить к этому, кажется, что строка в документации Apple неверно истолковывается

Продление происходит в ускоренном режиме, а автоматически возобновляемые подписки обновляются максимум шесть раз в день. Это позволяет вам проверить, как ваше приложение обрабатывает продление подписки, истечение срока подписки и историю подписки, которая включает пробелы.

Похоже, это означает, что все подписки в день будут обновляться только 6 раз. Вместо этого каждая подписка будет продлеваться 6 раз перед отменой. Это меня на время сбило с толку.

Кажется, это тоже 24 часа. Не обновляется в определенное время. Например, я сделал подписку в 11 утра, но не продлевался. Я сделал еще один в 14:00, который обновлялся 6 раз.

person AndyRyan    schedule 18.02.2016
comment
В этом случае, как имитировать подписку, отмененную пользователем? Какой будет ответ json после отмены пользователем или системой? какие флаги обрабатывать? - person Raju yourPepe; 09.08.2019