【发布时间】:2010-12-17 23:11:30
【问题描述】:
对于具有非消耗性应用内购买的基本应用,有没有人想出使用 SKPaymentQueue 的restoreCompletedTransactions 的最佳实践?
观察
我知道建议始终注册事务观察器以接收返回应用程序的待处理事务,但这是一个不同的问题。看起来restoreCompletedTransactions 是应用程序必须主动决定何时调用以轮询客户已经进行的所有购买的东西。
据我所知,该方法旨在检索可能丢失的购买。例如,客户可能会以这样一种方式安装应用程序或将应用程序移动到新设备上,导致该应用程序的本地先前付款记录丢失或重置。
担忧
我不清楚的是如何以可靠的方式自动检测这种情况(即如何决定何时轮询丢失的购买)。我不想把这件事搞砸并冒着拒绝客户访问他们已经付费的功能的风险。
同时,为了安全起见,我不想每次启动应用程序时都调用restoreCompletedTransactions,并且基本上可以取回我大约 99.9% 的时间已经知道的交易。 (除了应用内购买,我的应用实际上不需要任何网络连接。)
注意事项
Apple 文档阐明,客户已购买的任何非消耗品不会再次向他们收费。如果他们尝试重新购买,付款交易仍会发送到应用程序。
在最坏的情况下,客户可以通过这种方式恢复购买,但我仍然希望避免让他们走上类似于重新购买他们已经支付过的东西的路径。
【问题讨论】:
-
我目前正在努力解决同样的问题。我看到的问题在于 UI,调用 restoreCompletedTransactions 会立即提示用户输入他们的 iTunes 密码,而没有上下文,这在启动应用程序时是一件令人难以置信的混乱事情,尤其是对于尚未购买升级的人。我想在商店视图控制器显示时检查它,但它会立即提示输入密码,这真的会让首次购买者望而却步。
-
是的,正是我的观点。在用户第一次运行应用程序或进入商店页面时自动提示用户输入他们的帐户密码是我真正想要避免的事情。我最终选择了一个“恢复购买”按钮,它似乎工作正常。到目前为止,我还没有收到任何客户投诉或困惑。
标签: iphone ios in-app-purchase storekit