获取活跃的订阅 - 应用内计费 Android

13

我使用了In-app billing library 为我的应用程序中添加订阅。一切都正常工作,但是我无法找到如何获得用户当前活动的订阅。

根据文档queryPurchaseHistoryAsync方法返回用户对每个SKU最近购买的内容,即使该购买已过期、取消或消耗。因此,我无法知道当前订阅是否处于活动状态。

根据这篇文章,如果我们取消订阅,它仍然会被认为是当天有效的。但我收到的响应中包含在15天之前取消的订阅。

任何帮助将不胜感激。提前致谢。


大多数应用程序也会将订阅交易存储在自己的数据库中,你的应用程序中是否维护任何数据库? - Akshay Paliwal
1
我还没有实现订阅功能,但我非常确定queryPurchases()会返回当前有效的购买。你对这个查询有问题吗? - gxcare
谁得到了赏金? - Obsthändler
2个回答

9

我使用以下方法查询用户的订阅:

public void querySubscriptions() {
    Runnable queryToExecute = () -> {
        Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.SUBS);

        if (mBillingClient == null ||
                purchasesResult.getResponseCode() != BillingClient.BillingResponse.OK) {
            return;
        }
        mPurchases.clear();
        onPurchasesUpdated(BillingClient.BillingResponse.OK, purchasesResult.getPurchasesList());
    };

    executeServiceRequest(queryToExecute);
}

如果您需要更多细节,请询问。

这个方法只返回活跃订阅还是也返回之前购买的订阅? - user8583580
它将仅返回活动订阅。您可以测试它,这里有一个链接以了解如何测试订阅:https://developer.android.com/google/play/billing/billing_testing#testing-subscriptions - Obsthändler
如何使用这个来触发某些东西? - Namikaze Minato

-1

用户可以随时拥有多个有效订阅。您可以使用 isAutoRenewing 方法检查订阅是否仍然有效。以下是该方法的文档:

指示订阅是否自动续订。如果为 true,则订阅处于活动状态,并将于下一个付款日期自动续订。如果为 false,则表示用户已取消订阅。用户在下一个计费日期之前可以访问订阅内容,并且在那时失去访问权限,除非他们重新启用自动续订(或按照手动续订中描述的方式手动续订)。如果您提供宽限期,则此值对所有订阅保持设置为 true,只要宽限期尚未过期。下一个计费日期每天动态扩展,直到宽限期结束或用户修复其付款方法。


2
我如何识别自动续订设置为false但订阅仍有10天到期的情况?我如何允许用户在订阅到期之前访问高级功能? - Mehul Kanzariya
兄弟,这不正确。请阅读您发布的文档中的文本。 - Obsthändler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接