首页 文章

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

提问于
浏览
6

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

iOS提供了两个API:refresh receiptrestore completed transactions .

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

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

Apple似乎说我们可以使用:

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

2 回答

  • 3

    你需要阅读这篇Restoring Purchased Products以了解2之间的目的 .

    从iOS 7开始,从商店下载的每个应用程序都有一个收据(用于下载/购买应用程序),位于 appStoreReceiptURL . 当用户通过In App Purchase购买商品时, appStoreReceiptURL 上的内容会根据购买信息进行更新 . 大多数情况下,您只需刷新收据(在 appStoreReceiptURL ),以便了解用户所做的交易 .

    用户恢复交易以维持对已购买内容的访问权限 . 例如,当他们升级到新手机时,他们不会丢失他们在旧手机上购买的所有商品 . 在您的应用中包含一些机制,让用户恢复购买,例如“恢复购买”按钮 . 恢复购买会提示用户的App Store凭据,这会中断您的应用流量:因此,请勿自动恢复购买,尤其是每次启动应用时都不会 . 在大多数情况下,您的所有应用程序需要刷新收据并在收据中交付产品 . 刷新的收据包含用户在此应用程序,此设备或任何其他设备上购买的记录 . 但是,由于以下原因之一,某些应用需要采取其他方法:如果您使用Apple托管的内容,则还原已完成的事务会为您的应用提供用于下载内容的事务对象 . 如果您需要支持早于iOS 7的iOS版本(应用程序收据不可用),请恢复已完成的事务 . 刷新收据会向App Store询问收据的最新副本 . 刷新收据不会创建任何新交易 . 恢复已完成的事务会为用户创建的每个已完成事务创建一个新事务,实质上是为事务队列观察者重放历史记录 .

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

    enter image description here

    您还可以观看WWDC 2017,会话高级StoreKit了解更多详情https://developer.apple.com/videos/play/wwdc2017/305/

    enter image description here

  • 1

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


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

    是 . 您的典型流程是用户在新设备上安装您的应用程序和 restoring the purchases once . 在这个时刻,您拥有处理该过程所需的所有信息 . 在提示用户凭据时通常由用户启动的进程:

    在您的应用中包含一些机制,让用户恢复购买,例如“恢复购买”按钮 . 恢复购买会提示用户的App Store凭据,这会中断您的应用流量:因此,请勿自动恢复购买,尤其是每次启动应用时都不会 .

    At a later point in time you would refresh the receipt 获取您提供的自动续订订阅的最新相关信息,例如:

    • 订阅到期意图

    • 订阅重试标记

    • 订购试用期

    • 取消日期

    • 取消原因

    • ......

    有关这些字段的详细信息,请参阅Receipt Fields文档 .


    有用的链接

相关问题