应用内购买调用queryProductDetails无响应,isAvailable返回true且iOS端正常
Android端in_app_purchase商品查询无响应解决方案
- 先核对商品ID配置:代码中
_kProductIds列表的所有值必须和Google Play控制台中配置的商品ID完全匹配,安卓端ID区分大小写,且对应商品必须处于已激活状态,未激活的商品无法被查询到 - 检查测试环境合规性:
- 测试设备必须正常登录可用的Google账号,且该账号已加入应用的内购测试白名单,没有被加入限制名单
- 测试用的安装包包名、签名信息(尤其是release签名的SHA1值)必须和Google Play控制台中提交的版本完全一致,建议直接下载内部测试/封闭测试渠道的包进行调试,本地直接打包的签名不一致会导致查询失败
- 检查安卓端依赖配置:确认项目
android/app/build.gradle中已正确引入Google Play结算库,且版本和你使用的in_app_purchase插件版本兼容,可升级到插件最新稳定版尝试复现 - 添加异常捕获定位具体错误:你当前的代码没有异常捕获逻辑,未处理的平台异常会直接导致代码中止,修改代码如下:
try { ProductDetailsResponse productDetailResponse = await _inAppPurchase.queryProductDetails(_kProductIds.toSet()); // 后续处理返回结果 } catch (e, stack) { // 打印异常信息即可定位具体错误原因 print('查询商品失败: $e, 堆栈: $stack'); }
- 尝试清除设备Google Play商店的缓存数据,重启设备后再进行测试,本地缓存异常也会导致查询无返回
- 确认你测试用的Google Play商店版本支持当前使用的结算库版本,过低的Play商店版本也会触发兼容问题
内容的提问来源于stack exchange,提问作者Viktor Ermolov
相关产品推荐
相关产品推荐

