iOS 应用内购买(In-App Purchase,简称 IAP)是指用户在应用程序内购买虚拟商品或服务的功能。Apple 审核人员在审核应用时,会测试应用内购买功能的正确性和合规性。其中一个问题是,他们会在实时环境还是沙盒环境中进行测试呢?
实时环境 vs. 沙盒环境在 iOS 应用内购买中,实时环境是指真实的 App Store 环境,用户在其中进行购买的交易会真实产生费用。而沙盒环境则是一个模拟的测试环境,用于开发者在应用开发过程中进行购买功能的测试。在应用提交审核之前,开发者需要在应用中集成沙盒环境,以便审核人员可以在其中测试应用内购买功能。审核人员会在沙盒环境中模拟购买流程,包括购买虚拟商品、恢复购买、订阅等操作,以确保应用在购买功能方面的正确性和合规性。审核人员测试环境选择在审核过程中,审核人员会根据应用的具体情况选择测试环境。一般来说,审核人员会首先在沙盒环境中测试应用内购买功能。如果开发者在应用提交审核时没有提供测试账号,审核人员可能会在实时环境中测试购买功能。在实际操作中,开发者需要在应用中正确处理实时环境和沙盒环境的切换。一种常见的做法是使用代码判断当前运行环境,然后根据不同的环境选择使用真实的 App Store 环境或者沙盒环境。下面是一个示例代码,展示了如何判断当前环境并选择正确的支付环境:swiftfunc selectPaymentEnvironment() { #if DEBUG SKPaymentQueue.default().add(self) SKPaymentQueue.default().delegate = self SKPaymentQueue.default().environment = .sandbox #else SKPaymentQueue.default().add(self) SKPaymentQueue.default().delegate = self SKPaymentQueue.default().environment = .production #endif}在上面的代码中,我们使用了预编译指令 `DEBUG` 来判断当前是否处于调试模式。如果是调试模式,即在沙盒环境中进行开发和测试,我们将支付队列的环境设置为 `.sandbox`;如果不是调试模式,即在实时环境中运行,我们将支付队列的环境设置为 `.production`。在 iOS 应用内购买的审核过程中,审核人员会根据应用的情况选择测试环境。开发者需要在应用中正确处理实时环境和沙盒环境的切换,以确保应用内购买功能的正确性和合规性。在代码中,可以使用预编译指令来判断当前运行环境,并选择正确的支付环境。通过合理的测试和开发,开发者可以确保应用内购买功能的稳定性和可靠性,提升用户体验,同时通过审核,顺利上架 App Store。