移动/游戏
处理 RevenueCat Android SDK…
在 Android 应用中使用 RevenueCat SDK 时,正确捕获并分类购买与查询错误,向用户展示合适的提示。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
处理 RevenueCat Androi特定
解决思路
- 捕获 awaitPurchase() 抛出的 PurchasesTransactionException,其他 await* 调用(awaitOfferings、awaitGetProducts、awaitCustomerInfo、awaitRestore)捕获 PurchasesException。
- 在分支处理 error.code 之前,先检查 PurchasesTransactionException 的 userCancelled 标志,若为 true 则静默返回。
- 按 PurchasesErrorCode 分类处理:PurchaseCancelledError 不做任何操作;ProductAlreadyPurchasedError 刷新 CustomerInfo 并检查权益;PaymentPendingError 显示待处理提示并等待 UpdatedCustomerInfoListener;NetworkError 提示用户重试;StoreProblemError 提示重试或更新 Play Store;PurchaseNotAllowedError 显示说明信息;IneligibleError 改为展示基础套餐。
- 编写统一的 userFacingMessage(error: PurchasesError) 映射函数,将错误码转换为用户可见字符串,绝不把 e.error.message 传给 UI。
- 将 error.message 记录到日志中,仅用于技术排查。
- 不要围绕 SDK 调用自行添加退避重试循环,SDK 已在内部重试瞬时计费与网络失败;唯一的重试是用户触发的“Try Again”按钮。
- 对于非购买类调用,捕获 PurchasesException 后按 code 分支,并在可用时使用离线或缓存回退方案(如 NetworkError 时显示离线回退)。
适用边界 · 注意事项
- 未使用 RevenueCat Android SDK 的应用。
- 需要自行实现底层 Google Play Billing 重试与退避逻辑的场景。