В автоматически возобновляемых подписках приложений

Извините за миллионный вопрос о подписках на iTunes, но у меня все еще есть некоторые сомнения.

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

  • всякий раз, когда пользователь покупает подписку, отправляйте квитанцию ​​на сервер, чтобы подтвердить ее
    • если квитанция действительна, сохранить ее в базе данных
  • при загрузке приложения, спросить сервер, существует ли квитанция для этого UDID (это необходимо, чтобы выяснить, есть ли у пользователя действующая подписка)
    • Если да, проверьте, не был ли добавлен новый товар в магазин в диапазоне дат от даты начала подписки до даты истечения срока действия.
      • Если есть, уведомить пользователя об этих элементах каким-либо образом и пометить их как свободно загружаемые

Правильны ли эти шаги? И если да, то почему в документе Apple говорится:

В большинстве случаев ваше клиентское приложение iOS не требует изменений. Фактически, ваше клиентское приложение теперь стало проще, так как вы можете использовать тот же код для восстановления автоматически возобновляемых подписок, что и для восстановления нерасходуемых продуктов. Это описано в разделе «Восстановление транзакций». Ваше приложение получает отдельную транзакцию для каждого периода времени, когда подписка была продлена; ваше приложение должно проверять каждую квитанцию ​​отдельно.

На мой взгляд, вместо этого требуется некоторый код для обработки всех упомянутых мною случаев. Или я совершенно ошибаюсь. Я?

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

Обновление:

Я понял несколько вещей с тех пор, как опубликовал этот вопрос. Не стесняйтесь поправлять меня, если я ошибаюсь.

Прежде всего, я предполагаю, что я должен хранить продолжительность подписки где-то в моей собственной базе данных, потому что, как указано в документации Apple, вы не можете получить ее каким-либо образом через веб-службы Apple. Фактически, каждая продолжительность подписки имеет свой идентификатор продукта, поэтому у вас должен быть способ преобразовать идентификатор продукта в длину подписки.

Кроме того, Сильвиан опубликовал подробности о своей реализации автоматического продления подписки, так что, по крайней мере, я знаю, что мое мышление не было слишком ошибочным.

Теперь единственная проблема заключается в следующем: как мне узнать, что у пользователя есть действующая подписка? Я мог бы сохранить эту информацию на своем сервере, да, но как мне связать пользователя с завершенной транзакцией? Стоит ли сохранять UDID устройства?

25
задан Community 23 May 2017 в 12:09
поделиться