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

StoreKit 2订阅已购买但Xcode管理交易显示‘未完成’的疑问

解答

关于自动处理订阅流程的说法是否正确?

没错,这个说法是对的。使用SubscriptionStoreView搭配.onInAppPurchaseCompletion、.subscriptionStatusTask和.manageSubscriptionSheet这些StoreKit 2组件实现自动续期订阅时:

  • 购买流程完全由SubscriptionStoreView自动处理,包括展示订阅选项、响应用户购买操作
  • .subscriptionStatusTask会自动监听订阅状态变化,你直接在这个闭包里获取当前订阅的权益状态即可,无需手动监听交易队列
  • 自动续期订阅不需要手动调用finishTransaction()来完成交易——这和消耗品/非消耗品逻辑不同,订阅的核心是状态而非单次交易的完成状态,苹果会自动处理续期和状态同步。

为什么交易显示“已购买但未完成”?

这是Xcode StoreKit测试环境下的正常现象,原因如下:

  • 自动续期订阅的交易逻辑和一次性商品不同:消耗品必须调用finishTransaction()避免重复处理,但订阅的权益是基于活跃状态的,StoreKit会自动跟踪,不需要你手动标记交易完成
  • Xcode的“Manage Transactions”面板里的“未完成”只是测试环境的标记,不代表流程有问题。在真实App Store环境中,这类订阅交易不会显示这个状态,苹果服务器会自动处理后续续期和同步
  • 你只需要通过.subscriptionStatusTask的回调验证订阅状态:如果返回的SubscriptionStatus是.subscribed,就说明购买成功、权益已激活,完全不用管交易面板里的“未完成”标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:33:12