何时刷新收据与在iOS中恢复购买?

yvs*_*sbb 6 in-app-purchase ios

我们的iOS应用程序使用应用内购买,包括一次性订阅和自动续订订阅.这两种都是非消耗品.

iOS提供两种API:刷新收据恢复已完成的交易.

似乎后者适用于所有情况,而前者仅适用于某些情况.具体来说,当我们将自动更新购买恢复到新设备时,恢复购买的交易将导致将来续订生成将在后台发送到新设备的交易,其中刷新收据不会导致交易下次续订时发送到此设备.

鉴于此,有没有理由使用刷新收据?

Apple似乎说我们可以使用:

通过使用SKReceiptRefreshRequest类刷新应用收据或使用SKPaymentQueue类的restoreCompletedTransactions方法恢复已完成的事务,检索有关过去购买的信息.

onm*_*133 5

您需要阅读本《恢复购买的产品》以了解2之间的目的。

从iOS 7开始,从商店下载的每个应用程序都有一个收据(用于下载/购买该应用程序)appStoreReceiptURL。当用户通过In App Purchase购买商品时,at的内容appStoreReceiptURL会用购买信息进行更新。在大多数情况下,您只需要刷新收据(位于appStoreReceiptURL),就可以知道用户进行了哪些交易。

用户恢复交易以维持对他们已经购买的内容的访问。例如,当他们升级到新手机时,他们不会丢失在旧手机上购买的所有物品。在您的应用程序中包含一些机制,以使用户恢复购买的交易,例如“恢复购买”按钮。恢复购买会提示用户输入App Store凭据,这会中断您的应用程序流:因此,不要自动恢复购买,尤其是不是在每次启动应用程序时。

在大多数情况下,您的应用程序需要做的就是刷新收据并在收据中交付产品。刷新后的收据包含用户在此应用程序,此设备或任何其他设备上的购买记录。但是,由于以下原因之一,某些应用需要采用其他方法:

如果您使用Apple托管的内容,则还原已完成的交易将为您的应用提供用于下载内容的交易对象。如果您需要支持无法使用应用收据的iOS 7之前的iOS版本,请还原已完成的交易。

刷新收据会向App Store索要收据的最新副本。刷新收据不会创建任何新交易。

恢复已完成的事务会为用户进行的每个已完成的事务创建一个新事务,实质上是为您的事务队列观察者重放历史记录。

有关收据的更多信息,来自WWDC 2017,StoreKit会话中的新增功能https://developer.apple.com/videos/play/wwdc2017/303/

在此处输入图片说明

您也可以观看WWDC 2017,在Advanced StoreKit会话中了解更多详细信息https://developer.apple.com/videos/play/wwdc2017/305/

在此处输入图片说明


Kym*_*mer 4

编辑:我最初的答案是解释恢复和刷新之间的区别,这并没有回答原来的问题。对于任何有兴趣阅读的人,请查看此StackOverflow 答案以获取更多信息。

\n\n
\n\n

回答您的问题:是否有任何理由使用刷新收据?

\n\n

是的。您的典型流程是用户在新设备上安装您的应用程序并恢复一次购买。此时此刻,您已拥有处理该过程所需的所有信息。通常由用户启动的进程,因为它会提示用户的凭据:

\n\n
\n

在您的应用程序中包含一些机制,让用户恢复他们的购买,例如“恢复购买”按钮。恢复购买时会提示用户\xe2\x80\x99s App Store 凭据,这会中断应用程序的流程:因此,不要\xe2\x80\x99t 自动恢复购买,尤其是在每次启动应用程序时。

\n
\n\n

稍后,您将刷新收据以获取有关您提供的自动续订订阅的最新相关信息,例如:

\n\n
    \n
  • 订阅到期意向
  • \n
  • 订阅重试标志
  • \n
  • 订阅试用期
  • \n
  • 取消日期
  • \n
  • 取消原因
  • \n
  • ...
  • \n
\n\n

有关这些字段的更多信息,请参阅收据字段文档。

\n\n
\n\n

有用的链接

\n\n\n

  • 我明白了恢复和刷新之间的区别。仅当用户通过 iTunes 在新 iPhone 上安装应用程序时,应用程序收据才能为零。在这种情况下,他需要恢复而不是刷新。因此我的问题是有什么理由刷新收据吗? (2认同)
  • 但是刷新收据也会导致密码确认,对吧? (2认同)