Автообновляемая подписка никогда не истекает в песочнице - PullRequest
0 голосов
/ 09 июля 2019

Я успешно внедрил в своем приложении автообновляемые подписки (In App Purchase) с помощью StoreKit. Я все еще в режиме разработки, поэтому для тестирования я использую пользователя-песочницу. После того, как я подпишусь на ежемесячную подписку, используя среду песочницы, я получу доступ к «премиум-контенту». Я использую UserDefaults, чтобы указать, что пользователь приобрел продукт. Я не осуществил проверку квитанции.

Моя проблема заключается в том, что срок действия подписки никогда не истекает, поскольку я могу иметь доступ к премиум-контенту в любое время, когда я захочу, после истечения срока действия подписки, то есть макс. 30 минут, если в режиме тестирования обновления выполняются с ускоренной скоростью (6 * 5 минут)

Мой вопрос: истекает ли срок действия автообновляемых подписок, если мы храним продукт, приобретенный в userDefaults? я должен использовать проверку квитанции, чтобы истечь автопродление подписки?

private func productPurchaseCompleted(identifier: ProductID?) {
        guard let identifier = identifier else { return }

        purchasedProductIDs.insert(identifier)
        UserDefaults.standard.set(true, forKey: identifier)
        productPurchaseCompletionHandler?(true, identifier)
        clearHandler()
    }

1 Ответ

1 голос
/ 09 июля 2019

Единственный способ определить, активна ли для пользователя подписка, - это проверка квитанции.

  1. Лучший способ сделать это - сохранить файл квитанции на вашем сервере и периодически обновлять его с помощью конечной точки Apple /verifyReceipt, чтобы увидеть, изменилось ли что-нибудь. (Подробнее см. Подписки iOS ).

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

Второй подход - это небезопасный, не масштабируемый способ работы с подписками, но он «сработает» для небольшого побочного проекта. Рекомендуемый способ - через проверку квитанции на стороне сервера и отслеживание статуса, упомянутые в # 1.

...