StoreKit|沙盒测试环境

沙盒测试概述 - App Store Connect - 帮助 - Apple Developer

StoreKit 测试 vs 沙盒测试

测试 StoreKit 有两种方式:使用 StoreKit 配置文件或使用沙盒账户。

StoreKit 配置文件测试

  • 完全本地化的测试环境
  • 使用本地配置文件定义的产品和价格
  • 不需要网络连接,不需要 App Store Connect 账户

沙盒测试

  • 使用你在 App Store Connect 中实际配置的产品
  • 需要网络连接,连接到 Apple 的真实沙盒服务器
  • 需要专门的沙盒测试账户(在 App Store Connect 中创建)
  • 模拟真实的付款流程,但不会产生实际费用

沙盒测试方式除了不会真实收取费用之外,其他流程和正式环境基本一致。

通常,我会在早期开发和快速迭代测试时使用 StoreKit 配置文件测试。在开发基本完成之后,正式上线之前,会再做一次沙盒测试。

创建沙盒测试账户

在 App Store Connect 中,点击用户和访问 -> 测试账户 -> 沙盒,创建一个测试账户:

添加测试员后,其姓名、电子邮件地址和密码均无法再更改。

更多信息可以参考:https://developer.apple.com/cn/help/app-store-connect/test-in-app-purchases/create-a-sandbox-apple-account

使用沙盒测试账户

沙盒测试账户适用场景

  1. Xcode 本地编译的版本

在开发阶段,直接从 Xcode 构建并运行的应用。

此时,无需将应用二进制文件上传至 App Store Connect 即可在沙盒环境中进行测试。

  1. 使用 TestFlight 安装的测试版本

在 Beta 测试期间,通过 TestFlight 下载的应用。

避免在模拟器中登录沙盒账户

模拟器不支持登录沙盒账户,会提示 Password reuse not available for account The account state does not support password reuse 错误。

务必使用真实设备进行测试。

在真实设备上登录沙盒账户

在系统设置 -> 开发者,滑到底部,即可登录在 App Store Connect 中登录的沙盒测试账户:

沙盒测试环境 expirationDate 问题

使用沙盒账户购买订阅后,订阅到期时间(transaction.expirationDate)会显示为当日(无论购买月订阅还是年订阅)。

这是正常现象,因为在沙盒环境中,订阅刷新时间被大幅度减少:

https://developer.apple.com/help/app-store-connect/test-in-app-purchases/manage-sandbox-apple-account-settings/

常见错误

Password reuse not available for account The account state does not support password reuse

避免在模拟器上登录沙盒账户,使用真实设备。

https://developer.apple.com/forums/thread/772773