应用更新后 [NSBundle appStoreReceiptURL] 的收据是不是仍然存在
Posted
技术标签:
【中文标题】应用更新后 [NSBundle appStoreReceiptURL] 的收据是不是仍然存在【英文标题】:Is the receipt at [NSBundle appStoreReceiptURL] still present after an app update应用更新后 [NSBundle appStoreReceiptURL] 的收据是否仍然存在 【发布时间】:2014-11-12 08:12:29 【问题描述】:在生产环境中,如果用户进行了应用内购买,然后更新到较新版本的应用,那么反映应用内购买的收据是否仍然存在于捆绑包中?还是会因为应用更新而消失?
【问题讨论】:
为什么重要?假设在某些情况下收据可能会被删除,因此如果没有,您的应用需要下载新副本。你有什么问题? 没有具体问题,我很想知道它是否通常会持续存在,或者我是否必须始终请求一个新问题 如果没有,您应该始终请求一个新的。丢失的原因或时间无关紧要。您如何处理无法获得新收据是另一个问题。 请求新收据会提示用户输入他们的 iTunes 密码。我不希望这个提示意外弹出(从用户的角度来看)。因此,我试图更好地了解何时可以删除收据,因为苹果文档像往常一样在这方面含糊不清。 您通过试用找到这个问题的答案了吗?我想知道同样的事情。 【参考方案1】:好的,我想我终于找到了这个问题的答案。
收据是值得信赖的购买记录,以及 用户进行的任何应用内购买——就像一张纸 在商店购物时收到的收据。这里有一些关键 关于收据的要点:
Apple 通过 App Store 创建并签署收据。
为特定版本的应用程序和特定设备开具收据。
收据本地存储在设备上。
每次安装或更新时都会发出收据 发生。
安装应用程序时,与 申请和设备发行。
更新应用程序时,会发出与应用程序新版本匹配的收据。
每次发生交易时都会发出收据:
当发生应用内购买时,会发出收据,以便可以访问以验证购买。
当恢复之前的交易时,会发出收据,以便访问以验证这些购买。
来自https://www.objc.io/issues/17-security/receipt-validation/
因此,如果您更新收据上有购买历史记录的应用,则此购买历史记录应包含在为新应用版本签发的新收据中。 (当然,除非它是消耗品)。
【讨论】:
恢复购买时,如果我访问未更新的本地应用收据。这发生在生产中。你能证明一下吗?以上是关于应用更新后 [NSBundle appStoreReceiptURL] 的收据是不是仍然存在的主要内容,如果未能解决你的问题,请参考以下文章