我可以在Xcode环境中测试。 我可以使用 TestFlight 进行测试,它使用真实的 Apple ID 在沙盒环境中进行购买。
但是如何在沙盒环境中使用沙盒用户进行测试呢?因为我需要能够清除我的 Sandbox 用户购买历史记录,以便我可以再次测试首次购买。
我一直在阅读这些文档,我觉得每个特定的文档都跳过了我需要的信息。它解释了如何创建沙盒测试用户,我已经做到了。很多年前我做了很多 IAP 工作,但是事情已经发生了很大的变化,以至于它没有像我预期的那样工作。当我阅读文档时,我感觉我找不到缺失的部分。
当我使用 Xcode 在模拟器中进行测试时,它会在 Xcode 环境中执行 IAP 交易。这很有道理。
此页面说:
要使用您的 Sandbox Apple ID 运行您的应用程序,请构建并运行您的应用程序 来自 Xcode。
但是当我在直接从 Xcode 安装的物理设备上进行测试时,它也会在 Xcode 环境中进行 IAP 事务。我以为这会让我进入沙盒环境,但事实并非如此。 Xcode 事务管理器显示事务。最初的购买视图控制器根本没有引用沙盒,并且“一切就绪”警报显示环境:Xcode而不是环境:沙盒。
当我将测试版本放入 TestFlight 并使用该版本进行测试时,我的 IAP 交易正在使用我真实的 Apple ID 进行生产(但实际上我没有为任何交易付费)。
我以为在 TestFlight 中进行测试会给我沙箱环境,但它发生在生产环境中。 (购买视图控制器不显示沙盒,并且“一切就绪”警报不显示沙盒。)
那么,如何在沙盒中进行测试呢?我尝试测试的每一种方式要么让我进入 Xcode 环境,要么进入生产环境。
我错过了什么?
我已在手机上注销了真实的 Apple ID,然后使用我在 AppStore Connect 中创建的沙盒用户凭据登录。但是当我尝试测试该应用程序时,通过从 Xcode 安装,它仍然显示我处于 Xcode 测试环境中。当我创建事务时,这些事务会显示在 Xcode 事务管理器中。
如何在沙盒环境中进行测试?
IAP 处于“Xcode”模式与“Sandbox”模式之间的区别在于您是否在目标方案上设置 StoreKit 配置。
在 Xcode 中选择“产品”菜单并转到“方案”,然后“编辑方案...”。选择左侧的“运行”,然后转到“选项”选项卡。
对于“StoreKit Configuration”设置,如果您选择特定配置,您将获得 Xcode 模式。如果将此选项设置为“无”,即使从 Xcode 运行应用程序,您也会获得沙盒模式。
从 TestFlight 运行时,这些都不适用。在 TestFlight 中,您处于完全生产模式。
为了验证这一点,我在 App Store -> SANDBOX ACCOUNT 下的“设置”应用程序中登录了一个沙盒帐户。然后,我通过 Xcode 运行我的应用程序,并在我的应用程序中执行了一些 IAP。当 StoreKit 配置设置为“无”时,IAP 屏幕显示“沙盒”。当 StoreKit 配置设置为特定的 storekit 文件时,IAP 屏幕显示“Xcode”。
设置沙箱环境的步骤
转到 - Xcode -> 产品 -> 方案 -> 编辑方案 -> 单击运行(左侧),然后在选项选项卡中将“storekit Configuration”设置为“None”
在您的设备中,您无需从当前的 Apple ID 注销,只需进入设置 -> 应用商店 -> 并添加 Sandbox ID(您必须在您的 Apple 开发者帐户中创建)
现在从 xcode 运行项目,你的沙箱环境就准备好了
任何人都可以帮我解决以下问题,我认为与此相关 应用程序签署了协议,但想要验证,如果有人遇到同样的问题
我已经设置了我的沙盒环境,但现在的问题是当我尝试使用react-native IAP的getSubscription()获取订阅产品时,我得到的是空数组。
我可以使用 xcode 环境获取订阅产品,但一旦我切换到沙箱,得到空数组,并且根据我到目前为止的研发,这可能会出现问题,因为我的应用程序在 Apple 帐户上有免费协议。有人也遇到类似问题吗
这是苹果文档中应该提到的使用沙箱测试应用内购买:
在沙盒环境中测试应用内购买时,请确保 您正在运行应用程序的开发签名版本; 生产签名的构建使用生产环境。