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
相关产品推荐
相关产品推荐

