我正在一个要实现inapp计费订阅的android应用程序中工作。我已经在Google Play开发者控制台中创建了一个订阅ID,试用期为7天。
我的要求是在应用启动时,每次都将剩余的订阅天数通知用户。因此,如何以编程方式为获得剩余的订阅试用期。这是在试用期内实现inapp计费订阅的正确方法,如果没有,请向我建议实现此方法的正确方法。

最佳答案

BillingClient中有querySkuDetailsAsync()方法,用于检索包含SkuDetails方法的getFreeTrialPeriod()列表。该方法以ISO 8601格式返回试用期。例如,P7D等于7天。

val skus = listOf(
    "my-first-trial-subscription-sku",
    "my-second-trial-subscription-sku"
)

val params = SkuDetailsParams
    .newBuilder()
    .setType(BillingClient.SkuType.SUBS)
    .setSkusList(skus)
    .build()

billingClient.querySkuDetailsAsync(params) { billingResult, skuDetailsList ->
    skuDetailsList.forEach {
        Log.i("test", "${it.sku} trial is ${it.freeTrialPeriod}")
    }
}

可以使用从API 26开始可用的java.time.Period.parse()方法来解析ISO 8601期间。在较旧的设备上,可以使用包含相同Period.parse()方法的ThreeTenABP库。

还可以通过Purchase.getPurchaseTime()方法获得购买时间,该方法返回以毫秒为单位的unix时间戳。您可以通过将试用持续时间添加到购买时间中来计算试用结束的时间。

而您应该考虑的最后一件事-是否可以使用该试用版。如果用户已经使用过该试用版,则该试用版将不可用。 SubscriptionPurchase中的Google Play Developer API资源中有paymentState属性。但是似乎没有办法通过billingclient库进行检查。有关更多详细信息,请参见this问题。

关于android - 以编程方式获取应用内订阅试用期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16689664/

10-14 17:33