You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter iOS集成RevenueCat遇Offerings加载失败,StoreKit无产品返回求助

RevenueCat集成Flutter iOS应用:Offerings加载失败,StoreKit无产品返回

环境信息

  • purchases_flutter: ^10.2.2(RC SDK 5.76.0)
  • Flutter 3.x,iOS目标平台
  • 产品ID:my_product(自动续订月度订阅)
  • App Store Connect状态:READY_TO_SUBMIT
  • RC控制台:已配置默认Offerings,my_product映射至同名权益

错误日志

No existing products cached, starting store products request for: ["my_product"]
Store products request received response
Store products request finished
Error fetching offerings - The operation couldn't be completed.
(RevenueCat.OfferingsManager.Error error 1.)
There's a problem with your configuration. None of the products registered
in the RevenueCat dashboard could be fetched from App Store Connect
(or the StoreKit Configuration file if one is being used).

RC健康报告警告:

my_product (Pro Month): This product's status (READY_TO_SUBMIT) requires you
to take action in App Store Connect before using it in production purchases.

核心代码

初始化逻辑(main.dart)

await PurchaseService.instance.init(
  userId: FirebaseAuth.instance.currentUser?.uid,
);
Future<void> init({String? userId}) async {
  await Purchases.setLogLevel(kDebugMode ? LogLevel.debug : LogLevel.error);
  final config = PurchasesConfiguration(AppConfig.revenueCatIosApiKey);
  if (userId != null) config.appUserID = userId;
  await Purchases.configure(config);
}

获取Offerings逻辑

Future<Offering?> fetchCurrentOffering() async {
  try {
    final offerings = await Purchases.getOfferings();
    return offerings.current;
  } on PlatformException catch (e) {
    debugPrint('[PurchaseService] fetchCurrentOffering error: ${e.message}');
    return null;
  }
}

已尝试方案

  • 模拟器(iOS 18):添加含sl_pro的.storekit配置文件,加入project.pbxproj,Run scheme设置StoreKitConfigurationFileReference,StoreKit仍返回空产品
  • 模拟器(iOS 17 beta):结果一致
  • 真机(iOS 17 beta):日志确认Not using a simulator,StoreKit仍返回空响应

RC服务器调用成功(HTTP 200),返回["my-product"]作为待获取产品,但StoreKit无产品返回。


问题解答

1. READY_TO_SUBMIT状态的产品能否在沙箱真机使用?

不能。Apple沙箱环境仅同步Waiting for Review或Approved状态的订阅产品数据,READY_TO_SUBMIT状态仅表示产品信息填写完成,未进入审核流程,沙箱服务器不会识别该状态的产品。必须将产品提交审核,推进状态后才能在沙箱中测试。

2. Flutter中使用.storekit配置,flutter run是否会应用Xcode scheme的配置?

flutter run默认不会自动应用Xcode scheme的StoreKit配置,需按以下方式处理:

  • 确保.storekit文件已添加到iOS Target的Build Phases > Copy Bundle Resources中
  • 若用flutter run,需指定对应scheme:
    flutter run --scheme YourSchemeName
    
  • 或直接通过Xcode打开iOS工程,配置好scheme后运行,避免Flutter工具覆盖配置

关键排查修复点

  1. 产品ID一致性:日志显示RC返回的产品ID是my-product,但代码中使用的是my_product,二者存在短横线/下划线的差异,这是核心错误,需统一所有环节的产品ID
  2. 沙箱账号有效性:真机测试需登录未订阅过该产品的Apple沙箱账号
  3. 清理缓存:删除模拟器/真机上的应用,重启设备后重新测试
  4. 地区适配:确认测试设备的地区在产品的可用范围内
  5. SDK版本升级:尝试升级purchases_flutter到最新稳定版,避免版本兼容问题

内容的提问来源于stack exchange,提问作者Inan Mahmud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 15:01:06