如何从ProductDetails获得免费试用期订阅?

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

在 Google Play Billing Library 5 中,有 ProductDetais,而不是已弃用的 SkuDetails。 SkuDetails 有 freeTrialPeriod 字段,该字段返回订阅的免费试用。在 ProductDetails 中我找不到任何类似的字段,有没有办法从 ProductDetails 获得免费试用期?

android subscription play-billing-library
2个回答
9
投票

是的,有办法。首先检查这是否是订阅(而不是一次性购买)。然后获取您需要的定价计划。免费试用期始终是定价计划的第一个定价阶段,并且priceAmountMicros = 0且FormattedPrice =“free”。如果您的定价计划中的第一个定价阶段符合条件,您可以使用其计费周期作为试用期。

int trialDays = -1;
if(BillingClient.ProductType.SUBS.equals(productDetails.getProductType()))
{
    List<ProductDetails.SubscriptionOfferDetails> subscriptionPlans = productDetails.getSubscriptionOfferDetails();
    ProductDetails.SubscriptionOfferDetails pricingPlan = subscriptionOffers.get(planIndex);
    ProductDetails.PricingPhase firstPricingPhase = offer.getPricingPhases().getPricingPhaseList().get(0);
    if(firstPricingPhase.getPriceAmountMicros() == 0)
    {
        trialDays = BillingFlavor.parseDuration(firstPricingPhase.getBillingPeriod());
    }
}
return trialDays;

0
投票

对于解析周期,使用java.time是更好的方法。

    private fun parseIso8601ToDays(period: String): Int {
    return try {
        val parsedPeriod = Period.parse(period)
        parsedPeriod.days
    } catch (e: DateTimeParseException) {
        DEFAULT_DAYS_VALUE
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.