使用Xcode中的StoreKit测试,为In-App Purchase开发提速

746 阅读5分钟

一、 目的

使用个人的非付费的开发账号,结合In-App Purchase开发的技术本身,存在如下的痛点:

  1. 沙盒测试需要进入App Store Connect进行配置沙盒账号和商品;

  2. 必须使用App对应的付费的开发账号进行开发;

对比之下,使用Xcode中的StoreKit有如下优点:

  1. 不需要进入App Store Connect进行配置,直接在Xcode中配置中配置商品;

  2. StoreKit的所有回调与正式沙盒一致;

  3. 不再依赖付费的开发者账号,普通账号同样可以进行开发;

  4. 更方便的控制测试环境;

  5. 无需网络连接;

二、 Xcode中的StoreKit开发

  1. 创建StoreKit配置文件

StoreKit 配置文件包含应用内购买、订阅组、自动续订订阅和非续订订阅的描述。当配置文件处于活动状态时,当我们在测试环境中调用 StoreKit API 时,StoreKit 会使用此数据。 StoreKit 配置文件有两种类型:本地配置文件和 Xcode 14 及更高版本中的同步配置文件。

  • 如果已经在 App Store Connect 中设置了应用内购买或订阅并想在 Xcode 中测试,在新建时,可以选择同步配置文件;

  • 如果没有App Store Connect中配置,也可以在配置本地文件之后,同步到App Store Connect;

创建配置文件:

  1. Xcode > "File" > "New" > "File",或者是快捷键:"command + n"

  1. 窗口右上角搜索storeKit

  1. 选中StoreKit Configuration File,单击 “Next”

  2. 输入文件名称,如果需要同步,可以选中复选框并选择对应的开发者账号和App,然后单击“Next”。

建议不要勾选复选框,这样生成的配置文件只作为本地测试

  1. 选择保存的文件路径,单击“Create”。

这步选择的文件路径可以随意些,放在桌面上也是可以的。

  1. 将文件拖到项目里。

如果需要重命名配置文件,一定不能修改文件扩展名.storekit。

  1. 设置StoreKit配置文件

在Xcode中选中创建好的配置文件,在右侧窗口的左下角点击“添加”按钮(+)可以新增产品信息。

如果在创建时,选择了同步,我们需要将同步配置文件转为本地配置文件,否则的话无法编辑。

转换步骤:

  1. 选中文件

  2. Xcode > Editor > Convert to Local StoreKit

  1. 在Xcode中启用StoreKit测试

编辑好的配置文件,默认是不启用的,需要我们做如下设置:

  1. 点击 scheme,选择Edit Scheme.

  1. 依次点击 Run > Options > StoreKit Configuration,选择我们配置好的文件,点击 Close

  1. 准备在测试环境中验证收据

Xcode中的StoreKit测试会生成本地签名的收据,因此需要配置本地验证所需要的证书。步骤如下:

  1. 选中 StoreKit 配置 文件.

  2. Xcode > Editor > Save Public Certificate.

c. 选择保存的路径

  1. 试用Xcode中的StoreKit

在完成以上的工作之后,我们就可以进行购买的测试了。

一切和付费账号下的沙盒测试一样,只是我们不再需要去切换开发者账号,不再需要登录沙盒的AppleID,在自己的开发机器上,用自己的非付费的开发者账号就可以进行完整的测试,还能更加方便的进行测试环境的控制。

在上图的位置,我们可以进行货币单位、国家等设置。

在上图中,我们可以对自建的自动订阅产品进行编辑。

在我们完成购买之后,可以在Xcode中查看订单:

如果是订阅产品,删除该记录,即表示清空订阅记录,可以方便我们进行下次的订阅测试。

三、可能存在的版本适配问题

在Xcode16.3,iOS 18.3.1,MacOS 15.4.1的环境下,如果修改了Store文件中的如下配置:

比如将Default Storefront修改为China CNY,将Default Localization修改为 Chinese (Simplified),可能会出现应用的内存使用异常增长。

使用默认配置则不会出现上述问题。

四、 最后几句

StoreKit涉及的场景和内容很多,在实际的使用中,大家可以多参考下官方文档。地址如下:

  1. developer.apple.com/documentati…

  2. developer.apple.com/documentati…