Как локально обрабатывать продление автоматически возобновляемых подписок?

Я пытаюсь добавить автоматически возобновляемые подписки в свое приложение, но не знаю, как правильно это сделать.

То, что у меня сейчас есть

  1. Добавьте SKPaymentQueue.default().add(self) в делегат приложения.
  2. После покупки пользователем я сохраняю дату истечения срока действия и устанавливаю таймер на эту дату.
  3. Если я обновлю транзакцию, обновлю дату истечения срока действия и расширенный таймер.
  4. Если пользователь не обновит таймер, он запустится и обновит пользовательский интерфейс, чтобы отразить это изменение.

Мой вопрос в том, правильный ли это подход? В этом подходе, похоже, есть пробел, когда на короткий момент (когда дата истекла, а транзакция обновления еще не наступила) пользователи рассматриваются как бесплатный уровень.

Как лучше это сделать?


person sarunw    schedule 20.03.2018    source источник


Ответы (1)


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

  1. Локально/небезопасно: выполняйте проверку получения сразу после запуска приложения.
  2. Удаленно/безопасно: выполнить проверку получения на стороне сервера. Используйте доверенный сервер для подключения к App Store.

Для получения дополнительной информации см. Руководство по программированию проверки квитанций.

person Inder Jagdeo    schedule 20.03.2018
comment
Моя проблема не в проверке, а в переходе приложения между двумя периодами подписки. - person sarunw; 20.03.2018
comment
@sarunw, вы всегда найдете пробел с локальной проверкой, потому что локальная проверка требует времени, чтобы вернуть квитанцию. Так что лучше делать это удаленно. - person Inder Jagdeo; 20.03.2018
comment
У удаленного не будет этого зазора? Я думаю, что это та же ситуация, но другая, где происходит проверка? - person sarunw; 20.03.2018