Ios 苹果应用内购买和收据刷新
我有一个附带项目,我最近在我的收据管理器上工作,使其更强大,更依赖于应用程序的收据,而不是在交易后持续存储价值 然而,有两个要点,尽管我在网上阅读了苹果文档和其他答案,但我仍然感到困惑: 1。当用户恢复购买时,收据是否会刷新? 我在sandbox中做了几次测试,我发现在恢复时,收据会被刷新,当我通过iTunes服务器验证验证收据时,它会返回一个JSON,其中包含最新的事务。这非常有用,因为即使我关闭/打开应用程序,应用程序回执也会更新,并且我可以随时验证它,而无需刷新它。 然而,在生产中,这并没有起作用。恢复购买后,应用程序收据未刷新,我的用户被要求连续恢复购买。有人能回答这一点吗 2。刷新收据请求是否会触发警报,要求在生产过程中输入Apple ID的密码? 从上一点来看,我认为可以,我将在用户恢复其购买后强制刷新收据。然而,在development/sandbox中,每当我尝试刷新收据时,我都会被要求插入我的sandbox用户通行证(尽管在要求刷新之前,我可以在没有密码请求的情况下恢复购买)。我读了很多关于这方面的文章,有人说这可能不会在生产中发生。你们有人对此有澄清吗 注: 我知道,当恢复/购买时,我会收到带有收据的交易,但是,我需要使用应用程序收据来验证交易(这也是苹果说要做的) 提前谢谢。1。刷新收据 从理论上讲,调用恢复购买应该得到最新的收据。在遇到问题的情况下,请查看Ios 苹果应用内购买和收据刷新,ios,in-app-purchase,tvos,receipt-validation,Ios,In App Purchase,Tvos,Receipt Validation,我有一个附带项目,我最近在我的收据管理器上工作,使其更强大,更依赖于应用程序的收据,而不是在交易后持续存储价值 然而,有两个要点,尽管我在网上阅读了苹果文档和其他答案,但我仍然感到困惑: 1。当用户恢复购买时,收据是否会刷新? 我在sandbox中做了几次测试,我发现在恢复时,收据会被刷新,当我通过iTunes服务器验证验证收据时,它会返回一个JSON,其中包含最新的事务。这非常有用,因为即使我关闭/打开应用程序,应用程序回执也会更新,并且我可以随时验证它,而无需刷新它。 然而,在生产中,这并没
SKReceiptRefreshRequest
。通常,当恢复购买的调用遇到错误时,我会在生产中使用它
明智地使用它,触发该API可以导致显示应用商店的登录提示
2.何时要求用户登录?
可悲的是,我看到了这种变化,所以我不能给出一个明确的答案。通常情况下,恢复购买的呼叫不应触发登录。明确使用SKReceiptRefreshRequest
will
如果用户未登录商店,则调用任何商店API(如尝试购买或恢复购买)都可能触发登录流
苹果怎么说
从
刷新收据不会创建新交易;它从应用商店请求收据的最新副本。只刷新收据一次;在一行中多次刷新具有相同的结果。
恢复已完成的事务为以前完成的每个事务创建一个新事务,实质上是为事务队列观察者重放历史记录。您的应用程序保持自己的状态,以跟踪恢复已完成事务的原因以及如何处理这些事务。多次还原会为每个已完成的事务创建多个已还原的事务
我的推荐
restoreCompletedTransactions
。这可能会触发应用商店登录,但通常不太可能。大多数情况下,这已经足够了,因为设备上的收据通常是最新的SKReceiptRefreshRequest
以保证新的接收SKReceiptRefreshRequest
时,我建议将其包装在UIAlertController后面。我通常会显示一些指示它失败的内容,并有一个使用请求的“重试”按钮。这将触发新店铺登录restoreCompletedTransactions
回放设备知道的所有已完成事务
是的,应该是这样。但听起来你也在做一些服务器端验证?如果是这种情况,您可以将用户的任何收据发送到
/verifyReceipt
端点以获取最新状态。您不需要发送最新的收据,因为/verifyReceipt
也会刷新它
/verifyReceipt
,以获取用户的最新状态并缓存结果。你可以在每次应用发布时这样做
在一个完美的世界中,您将收据存储在服务器端并保持其最新状态,但您提到了服务器端项目,因此听起来有点过头了。然而,一个出了博