Flutter集成RevenueCat后获取产品出现SERVICE_UNAVAILABLE错误求助
从报错日志看,核心问题是Google BillingClient返回了Response code: 2(SERVICE_UNAVAILABLE),导致RevenueCat无法获取产品信息。结合你已完成的配置,以下是几个有效的排查和解决步骤:
更新设备的Google Play服务
旧版本的Google Play服务可能存在兼容性问题,直接导致Billing服务无法正常响应。打开Google Play商店,搜索“Google Play服务”,更新到最新版本后重试。严格核对产品ID的一致性
确认RevenueCat中配置的plus_3_card_slots和Google Play后台创建的一次性购买项目ID完全一致,包括大小写、下划线、特殊符号,任何细微差异都会导致查询失败。确认测试环境的签名和账号配置
- 如果你用的是测试版本(内部/封闭测试),必须将测试设备的Google账号添加到Google Play后台的测试人员列表,且测试包的签名要和Google Play后台上传的签名完全匹配。
- 即使应用已发布,测试时也要用发布签名的APK/AAB,debug签名的包无法正常调用Google Billing服务。
升级RevenueCat依赖版本
旧版purchases_flutter可能依赖了存在bug的BillingClient版本。打开pubspec.yaml,将purchases_flutter更新到最新稳定版,执行flutter pub get后重新编译测试。排查网络环境
测试设备需要能正常访问Google服务,部分地区可能需要确保网络可以连接到Google Play的计费服务器。切换到稳定的Wi-Fi或移动数据后重试。重新同步RevenueCat与Google Play的产品
登录RevenueCat后台,进入对应应用的产品配置页面,重新触发与Google Play的产品同步,确保两边的产品信息完全一致。单独测试Google Billing服务
可以写一段简单的代码直接调用Google Billing的查询接口,排除RevenueCat集成的问题:import 'package:google_billing/google_billing.dart'; void testBillingProduct() async { final billingClient = BillingClient.newBuilder() .setListener((_, __) {}) .enablePendingPurchases() .build(); await billingClient.startConnection(); final params = QueryProductDetailsParams.newBuilder() .setProductList([ QueryProductDetailsParams.Product.newBuilder() .setProductId("plus_3_card_slots") .setProductType(BillingClient.ProductType.INAPP) .build() ]).build(); final response = await billingClient.queryProductDetails(params); print("查询结果: ${response.productDetailsList}"); await billingClient.endConnection(); }
内容的提问来源于stack exchange,提问作者Artur

