在设备上通过 StoreKit 框架,利用来自 App Store Connect 的真实产品信息,使用 Apple 沙盒环境来测试你的 App 内购买项目的实施情况。使用沙盒 Apple ID 登录 App Store 后,带有开发签名的 App 会使用沙盒环境。
汕城网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。
要在 App Store Connect 中创建沙盒 Apple ID 或测试账户,请参阅“创建沙盒测试员账户”。
要使用沙盒 Apple ID 运行你的 App,请根据设备和操作系统来完成以下操作:
iOS 12 或更高版本 — 从 Xcode 构建并运行 App。第一次使用设备在带有开发签名的 App 中进行购买后,“设置”中会显示沙盒账户。使用沙盒 Apple ID 登录。不需要退出非测试 Apple ID 的登录。
macOS — 从 Mac App Store 退出登录,然后在 Xcode 中构建 App 并从“访达”启动这个 App。
第一次在带有开发签名的 App 中进行购买时,系统会提示你登录 App Store。使用你的沙盒 Apple ID 登录,以开始测试。在提示中如果出现文本 [Environment: Sandbox]
,表示你已连接到测试环境;如果没有出现 [Environment: Sandbox]
,则表示你在使用生产环境。确保你运行的 App 是带有开发签名的构建版本;带有生产签名的构建版本会使用生产环境。
中断的购买是需要用户在 App 以外执行一些操作后才能完成购买的一种交易。例如,用户可能需要更新付款方式或接受新的条款和条件,然后才能继续完成交易。
在沙盒测试中,你可以通过在 App Store Connect 中为沙盒 Apple ID 测试员开启中断购买功能,以此模拟中断的购买流程。这会中断测试员的所有购买行为,直至这名人员在 iOS 设备上同意更新后的条款和条件,或者你在 App Store Connect 中关闭这项功能,购买才能继续。有关更多信息,请参阅“测试中断的购买”。
通过登录 App Store Connect 来为沙盒 Apple ID 启用中断购买,然后:
从“用户和访问”,点按边栏中“沙盒”下方的“测试员”。你可以在右侧查看沙盒 Apple ID。
选择你要启用中断购买的沙盒 Apple ID。如果已经启用,你会在“中断的购买流程”列下看到一个勾号。
在出现的对话框中,选择“中断此测试员的购买流程”。
在测试设备上,使用启用了中断购买的沙盒 Apple ID 进行登录。
在你的 App 中,选择“购买”或“订阅”来进行 App 内购买。
观察系统显示付款页面。
在你的代码中,验证付款队列收到状态为 SKPaymentTransactionState.purchasing
(英文) 的新交易。
在设备上,验证该付款页面。
在你的代码中,付款将显示失败。付款队列会收到状态为 SKPaymentTransactionState.failed
(英文) 的更新交易。
检查你的代码调用了 finishTransaction(_:)
(英文),以将交易从队列中移除。
在设备上,系统应显示条款与条件,导致购买流程中断 (因为你已将沙盒环境配置为这样)。
在设备上,轻点同意按钮来接受条款与条件。
在你的代码中,验证付款队列是否收到一笔状态为 SKPaymentTransactionState.purchased
(英文) 的新交易,且这笔交易的 productIdentifier
(英文) 和数量都应该与失败交易的相同。
在你的代码中,验证相应收据。检查你的 App 提供了相关服务或产品,并且调用了 finishTransaction(_:)
(英文)。
在设备上,用户应观察到购买成功。
沙盒 Apple ID 会继续遇到购买流程中断,直到你在 App Store Connect 中停用此功能,或者直到用户在设备上接受条款与条件。要在 App Store Connect 中停用中断购买流程,请按照为设置这一测试案例所介绍的相同说明来操作,并且取消选择“中断此测试员的购买流程”。
在 iOS、Apple tvOS、iPadOS 和 MacOS 中的“管理订阅”页面上,客户可以管理活跃的订阅,也可以在到期后一年内管理已过期的订阅。在这个页面中,顾客可以升级、跨级、降级或取消他们的订阅。
在这个测试场景中,顾客要在你的 App 外从“管理订阅”页面重新订阅已过期的订阅。
对于这个测试案例,你需要为沙盒 Apple ID 安排一个已过期的订阅。如果没有过期订阅,可以购买一个自动续期订阅产品并让它过期。
你还需要在 App Store Connect 中配置一个或多个订阅产品。
在测试用的 iOS 设备上,打开“设置”>“Apple ID、iCloud、iTunes Store 和 App Store”。在“沙盒账户”部分下,轻点高亮显示的沙盒 Apple ID,并轻点“管理”来打开沙盒环境“订阅管理”页面。
轻点你要重新激活的已过期订阅。显示的订阅产品是你在 App Store Connect 的同一订阅组下配置的产品。
轻点来选取要重新订阅的项目。此时应能看见付款页面显示。
验证付款页面以完成购买。
打开你的 App。
在你的代码中,验证 SKPaymentTransactionObserver
(英文) 获得对 paymentQueue(_:updatedTransactions:)
(英文) 的回调,并进行了状态为 SKPaymentTransactionState.purchased
(英文) 的交易。
确认你的代码已检索并验证了 App 收据。验证成功的交易会列在收据中。
在你的代码中,确认它已将 App 内购买项目提供给 App 并更新了订阅用户的状态。
在你的代码中,确认它调用了 finishTransaction(_:)
(英文)。有关更多信息,请参阅“完成交易 (英文)”。
这个测试案例不需要清理。对于自动续期订阅,你可以在订阅过期时再次进行测试。
在 iOS、Apple tvOS、iPadOS 和 MacOS 中的“管理订阅”页面上,客户可以管理活跃的订阅,也可以在到期后一年内管理已过期的订阅。在这个测试场景中,客户将取消订阅,而这会停用自动续期。
要为此测试进行设置,请使用沙盒 Apple ID 账户购买一个自动续期订阅。
在测试用的 iOS 设备上,打开“设置”>“Apple ID、iCloud、iTunes Store 和 App Store”。在“沙盒账户”部分下,轻点高亮显示的沙盒 Apple ID,并轻点“管理”来打开沙盒环境“订阅管理”页面。
轻点以选择要取消的订阅产品。
轻点“取消订阅”按钮。
接下来,使用以下两种方式之一来验证订阅状态变化:
如果你配置了 App Store Connect 设置来接收 App Store 服务器通知,每次订阅产品的自动续期状态有变化时,你的服务器都会收到 notification_type
(英文) DID_CHANGE_RENEWAL_STATUS
。有关更多信息,请参阅“启用 App Store 服务器通知”。
通过最新的收据调用 verifyReceipt (英文) 来验证收据。JSON 响应中包含一个 pending_renewal_info
对象,其 auto_renew_status
的当前状态已变为 0。auto_renew_status_change_date_ms
包含状态变化的时间戳。
同样是在“管理订阅”页面中,通过重新启用订阅来测试停用自动续期的反向过程。轻点你要续订的订阅。
如果你在 App 中嵌入了产品标识符,你可以在代码载入了标识符后设置代码断点。验证 NSArray
(英文) 实例包含预期的产品标识符列表。
如果 App 从服务器获取产品标识符,请手动获取这个 JSON 文件,可以使用 Safari 浏览器等网页浏览器来获取,也可使用 curl
等命令行实用工具来获取。验证你的服务器返回的数据是否已包含预期的产品标识符列表,且服务器正确实现了标准的 HTTP 缓存机制。
在 App 的产品标识符列表中故意包含一个无效的标识符。然后,完成以下任一操作:
在生产构建版本中,验证 App 显示了商店 UI 的其余部分,并且用户可以购买有效的产品。
在开发构建版本中,验证 App 将问题呈现给你。
检查控制台日志,并确认你可以正确识别无效的产品标识符。确保在测试后将它移除。
利用你测试的产品标识符列表,创建并提交一个 SKProductsRequest
(英文) 实例。在代码中设置一个断点,然后检查列表中的有效和无效产品标识符。如果存在无效的产品标识符,请在 App Store Connect 中复查你的产品,并更正你的 JSON 文件或属性列表。
使用你已测试过的有效产品标识符,创建一个 SKPayment
(英文) 实例。设置一个断点,再检查付款请求。将付款请求添加至交易队列,再设置一个断点来确认系统会调用你的观察器的 paymentQueue(_:updatedTransactions:)
(英文) 方法。
虽然在测试过程中,你可以在不提供内容的前提下立即完成交易,但未能完成交易可能会造成问题。未完成的交易会永久遗留在队列中,这可能会干扰后续的测试。
检查交易观察器对 SKPaymentTransactionObserver
(英文) 协议的实现情况。确认在 App 没有显示其商店 UI,并且你近期没有发起购买的情况下,它也能够处理交易。
在你的代码中,找到对 SKPaymentQueue
(英文) 的 add(_:)
(英文) 方法的调用。验证你的 App 在 App 启动时是否调用了这个方法。
使用沙盒 Apple ID 登录 App Store,并在 App 中进行一笔购买。在交易队列观察器的 paymentQueue(_:updatedTransactions:)
(英文) 方法实现中设置一个断点,再检查这笔交易,以验证其状态是否为 SKPaymentTransactionState.purchased
(英文)。
在你的代码中存续这笔购买交易的位置上设置一个断点,然后确认你的代码保留了相应数据来响应成功购买。检查用户默认值或 iCloud 键值存储,并确认你的代码正确记录了相关信息。
找到 App 调用 finishTransaction(_:)
(英文) 方法的位置,再验证 App 在调用这个方法前是否完成了所有交易相关工作。确认你已针对每笔交易调用了这个方法,不管交易成功与否。有关更多信息,请参阅“完成交易 (英文)”。
如果为 App 启用了 App Store 服务器通知,请在沙盒环境中测试用于交易的逻辑。要确定测试环境中是否发出了针对订阅事件的通知,请检查服务器对服务器 JSON responseBody (英文) 对象中 environment
栏位的值是不是等于 Sandbox
。
有关 App Store 服务器通知栏位的更多信息,请参阅“App Store 服务器通知 (英文)”。
自动续期订阅在测试环境和生产环境中有着不同的行为。
在测试环境中,订阅续期以加快的速度发生,自动续期订阅在初始购买后最多续订五次。这样一来,你可以测试 App 如何处理订阅续期、订阅延迟和含有间隙的订阅历史记录。如需沙盒环境中订阅时限的完整列表,请参阅“测试 App 内购买项目”。
由于测试环境中到期和续订速度已被加快,订阅可能会在系统尝试续订之前到期,导致订阅期间出现短暂延迟。生产环境中也会因为各种原因而可能出现这样的延迟;验证你的 App 是否能够正确处理相关情况。
网站名称:创新互联IOS教程:使用沙盒测试 App 内购买项目
本文URL:http://www.shufengxianlan.com/qtweb/news24/300874.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联