在 Google Play Billing Library 5 中,有 ProductDetais,而不是已弃用的 SkuDetails。 SkuDetails 有 freeTrialPeriod 字段,该字段返回订阅的免费试用。在 ProductDetails 中我找不到任何类似的字段,有没有办法从 ProductDetails 获得免费试用期?
是的,有办法。首先检查这是否是订阅(而不是一次性购买)。然后获取您需要的定价计划。免费试用期始终是定价计划的第一个定价阶段,并且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;
对于解析周期,使用java.time是更好的方法。
private fun parseIso8601ToDays(period: String): Int {
return try {
val parsedPeriod = Period.parse(period)
parsedPeriod.days
} catch (e: DateTimeParseException) {
DEFAULT_DAYS_VALUE
}
}