以实用方式获取In app订阅试用期。

时间:2013-05-22 10:40:20

标签: android in-app-billing

我在Android应用程序中工作,我想实现inapp计费订阅。我在Google Play开发者控制台中创建了一个订阅ID,其跟踪期为七天。

我的要求是每次在应用启动时剩余剩余天数通知用户。那么如何才能获得订阅实用的订阅时段。这是使用跟踪期实施inapp计费订阅的正确方法,如果没有,请告诉我正确的实现方式。

2 个答案:

答案 0 :(得分:0)

是的,应用内结算API版本3支持试用期!我无法找到是否有API调用来提供文档中所需的试用期的详细信息并不意味着没有这样的类/方法。

但是,仅依靠远程Google服务进行订阅状态意味着未连接到网络时将不会通知用户。不在网络上时可能缺少通知不是问题。但是,知道这个限制,我也会在本地记录并保留开始日期。

一旦捕获到允许用户开始试用期的API调用结果,您就可以在本地保存该数据。保存本地数据有三种“简单”方法:通过首选项(最简单),编写本地文件(稍微更难),或者设置和填充sqlite数据库(但更难)。我一直使用偏好并且很容易。

如果您想让多个Android设备可以访问“本地”数据(如果您的订阅方案支持多个设备),则需要将此数据输出到远程服务器。并且,在活动开始时获取数据。

保持简单 - 本地设备上的数据 - 阅读本地首选项以查看试用开始时间,计算剩余天数并显示消息。还可以使用Google API调用来确认订阅状态。如果发生冲突,请相应地更新本地首选项。

使用此策略,可以在试用期/活动启动时通知用户剩余的试用期,而无需使用Google API来获取试用期的详细信息;无论应用用户是否在网络上,都可以作为奖励。

答案 1 :(得分:0)

BillingClient中有一种querySkuDetailsAsync()方法可以检索包含getFreeTrialPeriod()方法的SkuDetails列表。

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}")
    }
}