首页 > 解决方案 > 哪个版本的 iOS 在调用“restoreCompletedTransactions”时停止要求 Apple ID 验证?

问题描述

当我第一次为 iOS 应用程序开发应用内购买解决方案时,令人讨厌的事情之一是每次调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]都会要求用户验证他们的 Apple ID,并弹出可怕的密码对话框。我正在针对 iOS 8 和 9 进行测试。

向前跳几年,现在我注意到在 iOS 12.1 上,[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]除非用户在“设置”下退出其 Apple 帐户,否则呼叫不会显示该对话框。

所以我想知道,哪个版本的 iOS 在每次调用该函数时停止显示此对话框?

我希望我有一堆带有所有旧版本的 iOS 测试设备,但不幸的是我只有运行 iOS 12 的设备,所以我无法自己测试。

我想知道的原因是因为能够在不调用愚蠢对话框的情况下调用该方法意味着我可以将它用作检查用户在启动/恢复应用程序时进行的购买的后台方法。一旦我知道哪个 iOS 版本停止在每次恢复呼叫时要求 Apple ID 验证,我就可以添加一些条件逻辑以仅在该 iOS 版本上或更高版本上执行此操作。

我有一个应用程序,其中非消耗性应用程序内购买允许将内容包下载到设备。用户经常在他们的 iOS 设备上使用我的应用程序,因此目前他们必须使用“恢复购买”按钮在设备之间手动同步购买的内容。但是,如果我可以restoreCompletedTransactions在后台调用以获取他们拥有的非消耗品购买的列表,我可以将其与已经下载到他们设备的内容包进行比较,从而自动恢复他们在其他设备上购买的内容包。这是我多年来一直能够在 Android 上做的事情,用户问为什么该应用程序不能在 iOS 上做同样的事情。

(顺便说一句,我知道 Apple 推荐的做法是将 Apple 购买的收据存储在我的服务器上,并使用它来验证内容的重新下载,但由于各种原因,这是不可能的)

标签: iosin-app-purchaserestorestorekit

解决方案


推荐阅读