gpt4 book ai didi

ios - Apple 应用内购买和收据刷新

转载 作者:行者123 更新时间:2023-12-01 18:03:46 25 4
gpt4 key购买 nike

我有一个副项目,我最近在我的收据管理器上工作,以使其更强大,并更多地依赖应用程序的收据,而不是在交易后持续存储值(value)。

但是,尽管我在网上阅读了 Apple 文档和其他答案,但有两个要点,我仍然感到困惑:

1. 当用户恢复购买时,收据是否会刷新?

我在沙盒中进行了几次测试,我发现在恢复时,收据会刷新,当我通过 iTunes 服务器验证验证收据时,它会返回一个包含最新交易的 JSON。这非常有用,因为即使我关闭/打开应用程序,应用程序收据也会更新,我可以随时验证它而无需刷新它。
但是,在生产中,这不起作用。恢复购买后应用收据未刷新,我的用户被要求不断恢复购买。有人可以回答这个问题吗?

2. 刷新回执请求是否会在生产中触发询问 Apple ID 密码的警报?

从前面的观点来看,我认为可以,我会在用户恢复购买后强制刷新收据。但是,在开发/沙盒中,每次尝试刷新收据时都会要求我插入沙盒用户的通行证(尽管在请求刷新之前我可以在没有密码请求的情况下恢复购买)。我读了很多关于此的内容,有人说这可能不会在生产中发生。你们中有人对此有澄清吗?

笔记:
我知道在恢复/购买时,我会用收据取回交易,但是,我需要使用 App Receipt 来验证交易(这也是 Apple 所说的)。

先感谢您。

最佳答案

1.刷新收据

理论上,打电话恢复购买应该会得到最新的收据。如果您遇到问题,请查看 SKReceiptRefreshRequest .通常,当恢复购买的调用遇到错误时,我会在生产中使用它。

明智地使用它,触发该 API 会导致显示 App Store 的登录提示。

2. 什么时候要求用户登录?

可悲的是,我看到了这种变化,所以我无法给出明确的答案。通常情况下,恢复购买的调用不应触发登录。显式使用 SKReceiptRefreshRequest将要。

如果用户未登录商店,调用任何商店 API(如尝试购买或恢复购买)可能会触发登录流程。

苹果怎么说

来自 docs

Refreshing a receipt doesn't create new transactions; it requests the latest copy of the receipt from the App Store. Refresh the receipt only once; refreshing multiple times in a row has the same result. Restoring completed transactions creates a new transaction for every transaction previously completed, essentially replaying history for your transaction queue observer. Your app maintains its own state to keep track of why it’s restoring completed transactions and how to handle them. Restoring multiple times creates multiple restored transactions for each completed transaction.



我的建议
  • 存储您在设备上使用的最后一张收据的哈希值。您可以使用此哈希来检查最新收据,以便了解是否有任何更改。每当您的应用程序恢复时,您始终可以检查当前收据哈希是否与上次缓存的值不同。
  • 尝试并尽快提交收据。通常在应用程序启动时。
  • 如果用户尝试手动恢复购买,我会先调用 restoreCompletedTransactions .这可以触发 App Store 登录,但通常不太可能。大多数情况下,这已经足够了,因为设备上的收据通常是最新的。
  • 如果用户尝试另一个恢复购买,或者如果调用失败,则移至 SKReceiptRefreshRequest以保证新收据。
  • 使用 SKReceiptRefreshRequest 时,我建议将其包装在 UIAlertController 后面。我通常会显示一些表明它失败的东西,并有一个使用请求的“重试”按钮。这将触发新的商店登录。

  • 使用 restoreCompletedTransactions回放设备知道的所有已完成事务。

    关于ios - Apple 应用内购买和收据刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60480611/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com