Подтвердить что ты не робот

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

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

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

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

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

  

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

  

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

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

Update:

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

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

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

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

4b9b3361

Ответ 1

Думаю, я нашел решение. Он не требует дополнительного имени пользователя/пароля и, похоже, работает.

Примечание. Если вы считаете, что это неуместно, объясните, почему в комментариях. Спасибо.

В принципе, всякий раз, когда пользователь покупает подписку, я проверяю квитанцию ​​на свой сервер и сохраняю данные квитанции в настройках по умолчанию. Затем, когда приложение открыто или когда мне нужно проверить, действительно ли подписка по-прежнему действительна, я извлекаю ранее сохраненные данные квитанции из пользовательских значений по умолчанию и проверяю их на сервере.

Мой веб-сервис возвращает только срок действия подписки или срок ее действия истек, а также другую информацию, такую ​​как длина подписки. Для этого он просто запрашивает сервер iTunes, как обычно, и проверяет, отличен ли ответ на состояние. 21006 означает, что срок действия подписки истек.

Ответ 2

Вот как мы реализовали в App Purchase и, в частности, новые продукты с автоматической возобновляемой продукцией в моей компании.

Приложение передает квитанцию ​​о транзакции в наш веб-сервис, мы вернем OK в приложение, если мы обработаем его правильно, и Apple сможет его проверить. В этом случае мы обновили учетную запись пользователя (т.е. Базу данных), чтобы сказать "да, он заплатил, и его подписка действительна до истечения срока действия квитанции".

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

Теперь нам нужно было выполнить некоторые задания CRON, которые запускаются каждый день: каждый день мы составляем список проходов, срок действия которых истекает, и мы спрашиваем Apple, если оригинальная квитанция остается действительной: волшебная вещь заключается в том, что в их ответе, есть поле latest-receipt, в которое входит последняя квитанция. Если это не то же самое, что у нас есть, мы понимаем, что подписка была обновлена ​​автоматически, мы сохраняем самую последнюю квитанцию ​​для следующей проверки cron, и мы обновляем учетную запись пользователя, чтобы продлить срок действия.

Надеюсь, что это поможет.

Ответ 3

насколько я понял, сервер apple свяжется с вами (или с клиентом с его iPhone) и скажет "посмотрите, у меня есть действительная покупка для вас". Внутри приложения вы прочтете это сообщение и откройте соответствующий контент для использования. Следующим шагом будет рассказать серверу Apple, на который вы ответили на квитанцию, и сервер Apple не будет отображать сообщение еще раз.

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

Ответ 4

Если ваше приложение имеет какое-то управление пользователями, то есть вы используете имя пользователя/пароль для использования приложения, вам необходимо поддерживать сервер для записи покупки/действительности текущего пользователя. Это применимо для обычной подписки и покупки без затрат. Но... если вы используете новую автоматическую возобновляемую подписку, тогда НЕвозможно поддерживать несколько пользователей в этом приложении, потому что: этот вид покупки не может быть выполнен несколько раз в течение периода подписки, используя тот же идентификатор Apple из того же приложение, и я нашел, что это действительно раздражает и находит лучшее решение для этого случая, то есть, когда у меня есть несколько дочерних аккаунтов в приложении, но я хочу использовать тот же Apple-Id для покупки автоматической возобновляемой подписки для каждой учетной записи. И я думаю, что мне нужно использовать старую модель подписки. Любые новые мысли?