Извините за миллионный вопрос о подписках на iTunes, но у меня все еще есть несколько сомнений.
В основном я реализую автоматические возобновляемые подписки в своем приложении, и я хочу убедиться, что все правильно. Вот список шагов, которые я сделал с помощью:
- всякий раз, когда пользователь покупает подписку, отправляйте квитанцию на сервер для ее проверки
- если квитанция действительна, сохраните ее в базе данных
- при загрузке приложения, спросите сервер, существует ли квитанция для этого UDID (это нужно выяснить, имеет ли пользователь действительную подписку)
- если да, проверьте, был ли добавлен новый элемент в хранилище в диапазоне дат от даты начала подписки до даты истечения срока действия
- если есть, сообщите пользователю об этих элементах в некотором роде и отметьте их как свободно загружаемые
- если да, проверьте, был ли добавлен новый элемент в хранилище в диапазоне дат от даты начала подписки до даты истечения срока действия
Правильны ли эти шаги? И если да, то почему Apple сообщает:
В большинстве случаев ваше клиентское приложение iOS не должно изменяться. Фактически, ваше клиентское приложение теперь упрощается, так как вы можете использовать тот же код для восстановления автоматически возобновляемых подписки, как и для восстановления неиспользованных продуктов. Это описано в разделе "Восстановление транзакций". Ваше приложение получает отдельную транзакцию за каждый период времени, когда подписка была возобновлена; ваша заявка должна проверять каждую расписку отдельно.
Мне кажется, что для этого требуется некоторый код для обработки всех различных случаев, о которых я упоминал. Или я совершенно не прав. Я?
Плюс, как узнать о дате истечения срока подписки? Я не могу найти способ получить эту информацию в любом месте. Я должен сохранить это в своей собственной базе данных?
Update:
Я выяснил несколько вещей, так как я разместил этот вопрос. Не стесняйтесь исправить меня, если я ошибаюсь.
Прежде всего, я предполагаю, что я должен хранить длину подписки где-то в моей собственной базе данных, потому что, как указано в документах Apple, вы не можете получить ее каким-либо образом через веб-службы Apple. Фактически, каждая длина подписки имеет другой идентификатор продукта, поэтому у вас должен быть способ конвертировать идентификатор продукта в длину подписки.
Кроме того, Sylvian опубликовал подробные сведения о его внедрении автоматических возобновляемых подписки, поэтому, по крайней мере, я знаю, что мое мышление не было слишком большим недостатком.
Теперь единственная проблема заключается в следующем: как узнать, что у пользователя есть действительная подписка? Я мог бы хранить эту информацию на моем сервере, да, но как мне связать пользователя с завершенным сделка? Должен ли я сохранять UDID устройства?