如何在RevenueCat中获取产品的试用期限?

问题描述 投票:0回答:2

我正在尝试动态显示我的年度产品的试用时长。我在RC框架中找到了

trialDuration
,但我不知道如何使用它。我收到这样的产品:

private var offering: Offering? = SubscriptionManager.shared.offerings?.current

然后需要访问试用持续时间以通过文本标签显示它。比如获得

localizedPriceString
产品价格。

任何帮助都会很棒!

ios swift storekit revenuecat
2个回答
3
投票

我使用的是 sk1Discount,它是 StoreProductDiscount 类型的一部分。

例如使用以下代码片段:

if let introductoryDiscount = package.storeProduct.introductoryDiscount {
    if let offer = introductoryDiscount.sk1Discount,
       introductoryDiscount.paymentMode == .freeTrial {
        Text("\(offer.subscriptionPeriod.numberOfUnits) \(offer.subscriptionPeriod.numberOfUnits > 1 ? offer.subscriptionPeriod.unit.localizedPluralString : offer.subscriptionPeriod.unit.localizedString) for free!")
    }
}

希望对您有帮助。注意:我经历过 sk1Discount 有时在调试模式下为空,但我在生产中从未遇到过任何问题。


3
投票

RevenueCat SDK v4.21.1+

为方便起见,每个

localizedPriceString
对象都提供
Package
属性,并且在 Apple 的 App Store 上,免费试用作为 介绍性优惠提供。

您还可以使用 StoreKit 的底层 storeProduct 创建自己的

trialDuration
属性。

let discount = package.storeProduct.introductoryDiscount

这是一个返回试用期的自定义字符串表示形式的实现:

var introOfferDuration: String? {
    guard let discount = package.storeProduct.introductoryDiscount else {
        return nil
    }
    return discount.price == 0
    ? "\(discount.subscriptionPeriod.periodTitle()) for free"
    : "\(package.localizedIntroductoryPriceString!) for \(discount.subscriptionPeriod.periodTitle())"
}

// MARK: - RevenueCat SDK

extension SubscriptionPeriod {
    var durationTitle: String {
        switch self.unit {
        case .day: return "day"
        case .week: return "week"
        case .month: return "month"
        case .year: return "year"
        }
    }
    
    func periodTitle() -> String {
        let periodString = "\(self.value) \(self.durationTitle)"
        let pluralized = self.value > 1 ?  periodString + "s" : periodString
        return unit == .week ? "\(self.value * 7) days" : pluralized
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.