Google Play Billing测试订阅续期:回调方式与时间戳疑问
Google Play Billing 订阅续期测试经验分享
核心问题解答
a) 订阅续期信息需通过轮询获取,还是会通过监听器推送?
实测下来,运行中的BillingClient不会被Google主动调用触发监听器——哪怕是测试订阅(比如1周档5分钟续期的场景)。不管APP处于前台还是后台,续期事件都不会主动推送给客户端的PurchasesUpdatedListener。
你必须主动调用queryPurchasesAsync方法轮询获取最新订阅状态。建议的轮询时机包括:APP启动时、从后台切回前台时,或者每隔固定时长(比如1小时,避免过于频繁)主动查询一次。如果需要更实时的通知,也可以结合Google Play的实时开发者通知(服务器端)接收续期事件,但客户端侧仍需主动查询同步状态。
b) 订阅续期后,返回的时间戳是首次购买时间,还是新订阅周期的开始时间?
测试后确认两个关键时间戳的逻辑:
getPurchaseTime()返回的始终是首次购买的时间,续期后不会更新;getExpirationTime()会更新为新订阅周期的结束时间,每次续期都会向后顺延一个订阅周期(比如测试周卡续期后,过期时间会比上次多5分钟)。
针对你的离线使用场景,应该以expirationTime作为判断订阅是否有效的核心依据,而不是purchaseTime。离线时可以通过本地存储的过期时间判断用户是否仍在订阅期内,续期后查询到新的过期时间再同步更新本地存储即可。
内容的提问来源于stack exchange,提问作者MatthiasL
相关产品推荐
相关产品推荐

