Как правильно обрабатывать автоматическое продление с помощью StoreKit 2? ⇐ IOS
-
Anonymous
Как правильно обрабатывать автоматическое продление с помощью StoreKit 2?
Недавно я перешел на StoreKit 2, чтобы управлять активной подпиской в моем приложении. Но есть один аспект, в котором я не совсем уверен. Документация о дате отзыва и дате истечения срока действия мне неясна.
[*]
Если пользователь отменяет автопродление во время 7-дневной пробной версии, будет ли дата отзыва отличной от нуля?
[*]
Содержит ли Transaction.currentEntitlements только активный в данный момент продукт? Я предполагаю, что мне не нужно проверять, истек ли срок действия expirationDate, если это так.
[*]
Рекомендуется ли выполнять этот код в MainThread?
Вот полный метод:
@MainActor func syncActiveAppleProduct() асинхронный { LoggerManager.shared.warning("[Извлечь текущие права]") var activeSubscriptions: [Продукт] = [] для ожидания результата в Transaction.currentEntitlements { делать { пусть транзакция = попробуйте checkVerified (результат) охранная подписка: Product = subscribes.first(where: { $0.id == транзакции.productID }) else { продолжать } переключить транзакцию.productType { случай .autoRenewable: охранная транзакция.revocacyDate == ноль еще {продолжить} если let expirationDate = транзакции.expirationDate { KeychainHelper.Subscription.setExpiryOrCancelledDate(expirationDate) } activeSubscriptions.append(подписка) случай .consumable, .nonConsumable, .nonRenewable: Guard let expirationDate = getNonRenewingExpirationDate (forProductId: транзакции.productID, PurchaseDate: транзакции.purchaseDate) еще {продолжить} если Дата()
Недавно я перешел на StoreKit 2, чтобы управлять активной подпиской в моем приложении. Но есть один аспект, в котором я не совсем уверен. Документация о дате отзыва и дате истечения срока действия мне неясна.
[*]
Если пользователь отменяет автопродление во время 7-дневной пробной версии, будет ли дата отзыва отличной от нуля?
[*]
Содержит ли Transaction.currentEntitlements только активный в данный момент продукт? Я предполагаю, что мне не нужно проверять, истек ли срок действия expirationDate, если это так.
[*]
Рекомендуется ли выполнять этот код в MainThread?
Вот полный метод:
@MainActor func syncActiveAppleProduct() асинхронный { LoggerManager.shared.warning("[Извлечь текущие права]") var activeSubscriptions: [Продукт] = [] для ожидания результата в Transaction.currentEntitlements { делать { пусть транзакция = попробуйте checkVerified (результат) охранная подписка: Product = subscribes.first(where: { $0.id == транзакции.productID }) else { продолжать } переключить транзакцию.productType { случай .autoRenewable: охранная транзакция.revocacyDate == ноль еще {продолжить} если let expirationDate = транзакции.expirationDate { KeychainHelper.Subscription.setExpiryOrCancelledDate(expirationDate) } activeSubscriptions.append(подписка) случай .consumable, .nonConsumable, .nonRenewable: Guard let expirationDate = getNonRenewingExpirationDate (forProductId: транзакции.productID, PurchaseDate: транзакции.purchaseDate) еще {продолжить} если Дата()
Мобильная версия