Google Play Billing:如何判断用户已订阅(二次启动/换设备场景)
订阅状态查询解决方案
二次启动应用时无需购买流程判断订阅
直接通过Google Billing Library提供的查询接口获取订阅数据,步骤如下:
- 初始化
BillingClient并连接成功后,调用queryPurchasesAsync方法,传入BillingClient.SkuType.SUBS作为查询类型。 - 在回调中遍历返回的
Purchase列表:- 过滤出
isAcknowledged()为true的记录(确保是已确认的有效订阅)。 - 检查
getPurchaseState()是否为Purchase.PurchaseState.PURCHASED,同时对比getExpirationTime()与当前时间,确认订阅处于有效期内。 - 将验证通过的订阅状态持久化到本地(比如
SharedPreferences),下次启动可优先读取本地缓存,再定期触发远程查询同步,减少接口调用频率。
- 过滤出
更换设备后判断订阅状态
由于没有后端服务,完全依赖Google Play账户的同步机制:
- 用户在新设备上登录购买订阅时使用的同一Google Play账户后,调用上述相同的
queryPurchasesAsync接口,Google Play会返回该账户下所有关联的有效订阅记录。 - 若用户切换了Google账户,则无法获取原账户的订阅数据,此时需引导用户登录购买时的原始账户以验证订阅状态。
内容的提问来源于stack exchange,提问作者MinhNV
相关产品推荐
相关产品推荐

