当我首次为iOS应用开发inapp购买解决方案时,令人讨厌的事情之一是,调用[[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购买的收据存储在我的服务器上,并用它来验证内容的重新下载,但是由于各种原因,这是不可能的)