
如何获取内购商品与价格信息flutter_inapp_purchase商品查询fetchProducts完全教程【免费下载链接】flutter_inapp_purchaseFlutter In App Purchase plugin that confirms OpenIAP项目地址: https://gitcode.com/gh_mirrors/fl/flutter_inapp_purchaseflutter_inapp_purchase是一款支持 iOS 与 Android 的 Flutter 内购IAP插件。本文将以新手视角讲解如何使用它的核心方法fetchProducts完成商品查询快速获取内购商品的名称、价格、币种等关键信息让你少走弯路。fetchProducts 商品查询是做什么的在展示商店页面、拉起支付之前你需要先向 App Store 或 Google Play 查询这个商品卖多少钱、叫什么名字。fetchProducts就是这个统一的商品查询入口✅ 一次查询多个商品 IDSKUs✅ 自动适配 iOS / Android 双平台返回统一的数据结构✅ 通过泛型区分一次性商品与订阅商品类型安全源码实现位于lib/flutter_inapp_purchase.dart的fetchProducts方法第 1690 行附近内部会调用原生fetchProducts通道并自动解析为 Dart 对象。三步快速上手商品查询第 1 步初始化内购连接 initConnection⚠️必须先连接再查询。未初始化就调用fetchProducts会抛出NotPrepared错误。final iap FlutterInappPurchase.instance; await iap.initConnection();第 2 步调用 fetchProducts 查询商品价格只需传入商品 ID 列表即可返回带价格的完整商品信息final products await iap.fetchProductsProduct( skus: [coins_100, remove_ads], type: ProductQueryType.InApp, // 默认值可省略 );第 3 步读取 title、displayPrice 等商品字段返回的每个商品都实现了ProductCommon接口定义于lib/types.dart常用字段如下字段说明id商品 ID即你传入的 SKUtitle商品名称App Store / Play 中配置的名称description商品描述displayPrice本地化展示价格如 ¥6.00、$0.99price原始价格数值currency币种代码如 CNY、USDtype商品类型消耗型 / 非消耗型 / 订阅for (final p in products) { print(${p.title}: ${p.displayPrice} (${p.currency})); } 官方示例 App 中example/lib/src/constants.dart定义了示例商品 ID如dev.hyo.martie.10bulbsexample/lib/src/screens/all_products_screen.dart则演示了初始化 → 查询 → 展示的完整流程非常值得参考。fetchProducts 参数与返回类型速查type 参数查询目标返回类型ProductQueryType.InApp默认一次性商品ListProductProductQueryType.Subs订阅商品ListProductSubscriptionProductQueryType.All一次性商品 订阅ListProductCommon 订阅商品额外提供subscriptionPeriodUnitIOSiOS 计费周期和subscriptionInfoAndroidAndroid 计费周期等字段可用于展示每月 ¥18之类的文案。查不到商品iOS / Android 可见性要求这是新手最高频的踩坑点 ——fetchProducts返回空列表通常不是代码问题而是商品配置问题 iOS商品需在 App Store Connect 中为Ready for Sale或Approved状态Bundle ID 必须与查询商品的应用一致StoreKit 2 有本地缓存调试期修改价格后可能需要等缓存刷新 Android商品需在 Google Play 控制台中处于活跃状态至少进入内部测试轨道Billing Client v8 要求应用签名证书已添加到 Play 控制台只能查询属于当前应用包名的 SKU常见错误与排查清单错误 / 现象原因解决办法NotPrepared未初始化连接先调用initConnection()返回空列表商品未上架 / 状态不对检查 App Store Connect 或 Play 控制台状态NetworkError网络异常提示用户重试价格显示为 0 或异常沙盒账号 / 测试商品使用测试账号验证价格try { final products await iap.fetchProductsProduct(skus: ids); } on PurchaseError catch (e) { if (e.code ErrorCode.NotPrepared) { // 先 initConnection() 再查询 } }总结商品查询只需两步initConnection()初始化 fetchProducts()查询用displayPrice直接展示本地化价格无需自行拼接币种查不到商品时优先检查商店后台的商品状态而不是代码完整 API 说明可参考docs/docs/api/methods/get-products.md文档掌握fetchProducts后你就可以继续学习requestPurchase()发起购买、getAvailablePurchases()恢复购买了完成整个内购闭环。【免费下载链接】flutter_inapp_purchaseFlutter In App Purchase plugin that confirms OpenIAP项目地址: https://gitcode.com/gh_mirrors/fl/flutter_inapp_purchase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考