对于具有非消耗性应用内购买的基本应用,有没有人想出使用 SKPaymentQueue 的最佳实践restoreCompletedTransactions
?
观察
我知道建议始终注册事务观察器以接收返回应用程序的待处理事务,但这是一个不同的问题。看起来restoreCompletedTransactions
应用程序必须主动决定何时调用以轮询客户已经进行的所有购买。
据我所知,该方法旨在检索可能丢失的购买。例如,客户可能会以这种方式安装应用程序或将应用程序移动到新设备上,从而导致应用程序的本地先前付款记录丢失或重置。
关注点
我不清楚的是如何以可靠的方式自动检测这种情况(即如何决定何时轮询丢失的购买)。我不想把这件事搞砸并冒着拒绝客户访问他们已经付费的功能的风险。
同时,为了安全起见,我不想restoreCompletedTransactions
每次应用程序启动时都打电话,并且基本上可以取回我大约 99.9% 的时间已经知道的交易。(除了应用内购买,我的应用实际上不需要任何网络连接。)
笔记
Apple 文档明确指出,客户已进行的任何非消耗性购买都不会再次向他们收费。如果他们尝试重新购买,支付交易仍然应该发送到应用程序。
最坏的情况是,客户可以通过这种方式恢复购买,但我仍然希望避免让他们走上类似于重新购买他们已经支付过的东西的路径。