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

StoreKit 2:如何获取订阅自动续费时将使用的下一个产品ID

在StoreKit 2中获取自动续订订阅降级后的目标产品ID

在StoreKit 2的RenewalInfo结构体中,你需要的下一次续订的目标产品ID可以通过productID属性直接获取,当前生效的订阅产品ID对应currentProductID属性。

核心逻辑说明

当用户执行降级(或延迟生效的升级)操作后:

  • currentProductID保持为当前正在生效的订阅产品ID(比如你例子中的年度产品ID),直到当前订阅周期结束。
  • productID会立即更新为用户选择的目标产品ID(即例子中的月度产品ID),这个值就是下一次自动续订时将使用的产品ID。

代码示例修改

你可以调整现有代码,通过renewalInfo.productID获取目标产品ID:

if let status = try? await self.subscriptionProducts.first?.subscription?.status.first {
    do {
        let renewalInfo = try self.checkVerified(status.renewalInfo)
        // 当前生效的订阅产品ID
        let currentProductId = renewalInfo.currentProductID
        // 下一次续订的目标产品ID(降级后的月度产品ID)
        let nextRenewalProductId = renewalInfo.productID
        
        // 在这里处理展示逻辑:比如显示"当前订阅:年度产品,到期后将自动续订为月度产品"
    } catch {
        // 处理验证失败的情况
        print("RenewalInfo 验证失败: \(error)")
    }
}

额外注意事项

  • 只有当用户存在待生效的订阅变更时,productID和currentProductID才会不一致;如果用户没有修改过续订计划,两者值相同。
  • 务必确保RenewalInfo经过checkVerified验证,避免使用未验证的信息导致展示错误或安全问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:05:02