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

StoreKit是否会为旧版App过滤不支持的产品类型?

关于StoreKit跨版本IAP产品查询的问题解答

核心结论

  1. 1.0版本会获取到2.0的自动续期订阅产品
    只要你在App Store Connect中创建并激活了自动续期订阅产品,且1.0版本的SKProductsRequest请求包含了这些订阅的产品ID,StoreKit就会返回对应的产品信息。StoreKit本身不会根据应用版本自动过滤未在该版本中声明支持的产品类型。

  2. 必须添加兼容代码过滤不支持的项目
    1.0版本没有处理自动续期订阅的逻辑(比如订阅状态验证、续订流程、用户权益同步等),如果不对这些产品进行过滤,用户可能会在1.0版本中看到并尝试购买订阅,导致流程异常,甚至触发审核问题或用户投诉。

具体实现方案

有两种可靠的处理方式:

  • 方式一:分版本维护产品ID列表
    为1.0版本单独维护非消耗型产品的ID列表,仅请求该列表内的产品,完全避免获取到订阅产品。
  • 方式二:过滤返回的产品结果
    在获取到产品列表后,通过产品类型属性过滤掉自动续期订阅:
    • StoreKit 1 示例代码:
      func filterSupportedProducts(from products: [SKProduct]) -> [SKProduct] {
          return products.filter { product in
              // 仅保留无订阅周期的非消耗型产品
              product.subscriptionPeriod == nil
          }
      }
      
    • StoreKit 2 示例代码:
      import StoreKit
      
      func filterSupportedProducts(from products: [Product]) -> [Product] {
          return products.filter { product in
              product.type != .autoRenewable
          }
      }
      

关于审核规则与StoreKit过滤的说明

App Store要求新增产品类型需提交对应版本审核,是指应用发布新版本时,必须确保代码已适配新增的产品类型,审核时会验证这一适配性。但StoreKit本身不会遵循该规则自动过滤产品——它仅负责返回你请求的所有有效产品ID对应的信息,与应用版本无关,因此必须由开发者自行控制产品范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 20:32:03