【问题标题】:How can I know that user just renewed a google play subscription?我怎么知道用户刚刚续订了 google play 订阅?
【发布时间】:2019-07-31 16:09:04
【问题描述】:

我正在使用 google play 订阅,但不知道如何知道用户何时将计划再续订一段时间。我提供 3 个积分来使用我的应用的一项功能,如果续订,用户每个月都会收到 3 个积分。
我在下面用这个方法监控用户计划,但是它会缓存用户订阅一段时间,所以我害怕在用户实际上没有续订的情况下多给用户3个积分。

fun queryPurchases() {
    val purchasesResult = mBillingClient?.queryPurchases(BillingClient.SkuType.SUBS)
    if (mBillingClient?.isFeatureSupported(BillingClient.FeatureType.SUBSCRIPTIONS)?.responseCode ==  BillingClient.BillingResponseCode.OK) {
        if (purchasesResult?.responseCode == BillingClient.BillingResponseCode.OK) {
            purchasesResult.purchasesList?.addAll(
                    purchasesResult.purchasesList)
        }
    }

    if (purchasesResult != null && purchasesResult.purchasesList != null) {
        if (purchasesResult.purchasesList.isEmpty()){
            purchasedPlan.postValue(null)
        }else {
            purchasedPlan.postValue(purchasesResult.purchasesList[0])
        }
    }
}

我该如何正确处理这种情况?我考虑过在下个月给用户 3 个积分,如果该计划突然变成免费计划,则删除 3 个积分,但我认为这种方法非常可滥用

【问题讨论】:

  • 你能澄清一下你在担心什么吗?用户会取消订阅(试用期)然后再次订阅以获得试用期,对吧?
  • @Alex 假设用户在我的应用上订阅了 1 个月,而不是他将获得 3 个积分来使用某些功能,我可以使用 PurchasesUpdatedListener 轻松完成。问题是,我认为他可以在我猜的应用程序之外续订订阅,或者只是设置自动续订,然后在续订后他必须再获得 3 个积分,我不知道如何跟踪这个以继续给他积分当前订阅的每次续订
  • @Alex 目前我只是在跟踪每个登录,如果他的订阅已完成,我可以保存他购买订阅的那一天,并在下个月检查订阅是否存在,但这似乎是错误的,因为我检查订阅的方式是由 google play 缓存的,所以我不太确定如何在每次订阅期开始后给用户积分

标签: android in-app-subscription


【解决方案1】:

要获取有关订阅的最新信息,您可以使用 queryPurchaseHistoryAsync() 而不是 queryPurchases()。您可以将其与本地缓存算法结合使用以降低滥用级别。 Link to documentation

警告: queryPurchaseHistoryAsync() 进行网络调用,这可能会导致向应用用户收费。

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 2018-04-22
    • 1970-01-01
    • 2011-07-17
    • 2013-01-21
    • 2021-12-12
    • 2013-03-24
    • 2020-09-13
    • 1970-01-01
    相关资源
    最近更新 更多