是否有必要在iOS上启动时验证/刷新应用商店收据?

时间:2016-10-05 22:16:39

标签: ios app-store receipt-validation

收据验证Apple docs表示在发布后立即执行收据验证。这相当于检查[[NSBundle mainBundle] appStoreRecieptURL]返回的路径中的数据,如果不存在则通过SKReceiptRefreshRequest刷新,并验证它。上述文档引用了iOS和macOS。

iOS上实际上是否必要?如果是这样,为什么?是阻止用户在越狱设备上使用我的应用程序,还是没有从应用程序商店购买它(在这种情况下,我可能不关心我的应用程序是免费的)?或者它是否会对恢复或验证应用内购买等其他操作产生影响?例如,收据数据是否已经存在以验证应用内购买的交易?

注意:我没有使用应用内订阅。我有应用内购买,但在验证并记录购买服务器端后,我不使用收据。

5 个答案:

答案 0 :(得分:8)

你不需要这样做,这只是可选的,可以在iOS7 +上完成,如果你有兴趣这样做的话。

简单地说,实施验证纯粹是财务决定,即使您验证了配方,建议您在发生故障时不要禁用内容,因为验证可能会在标准环境中随时失败(例如,如果没有连接),这种过度反应可能会破坏消费者的体验。

总之,当你被允许在失败的情况下禁用内容时,无论出于何种原因,在实践中对OSX进行验证是有意义的。但是如果你觉得你的消费者比你的收入更多,或者被盗内容的数量超出你的保证金额,那么在iOS上也可能值得这样做。

注意: 一般情况下,您可以在Apple's Documentation中详细了解收据验证的技术细节。

答案 1 :(得分:4)

您问题的简单答案是不,没有必要

以下是详细说明

  1. 根据Apple文档here,Apple提供了两种验证收据的方法,它们仅作为指导,以防止未经授权的应用程序副本运行。有关更多指导,苹果已经指出了苹果审查指南。
  2. 在审核指南here中,Apple未提及与验证收据相关的任何内容。
  3. 如果收据验证是强制性的,Apple会提供一个简单的API来验证它。

    Titbit:在应用商店收据验证方面,您可以看到很多拒绝。但所有这些问题都是因为收据验证没有正确完成。

    但我的个人建议与上述答案不同。首先要考虑的是"永远不要低估黑客和#34;。从应用程序的开始几次验证收据。有关详情,请参阅this文章。

答案 2 :(得分:3)

您通常只会验证收据,以防止未购买应用的用户或使用自动续订订阅的用户进行盗版。

虽然您可以查询IAP信息的收据,但实际上更容易(并且需要通过应用审核)在某个地方提供按钮以“恢复以前的购买”并致电

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

对于用户来说,如果按下“恢复购买”按钮而不是在应用启动时无法解释,可能会提示用户输入Apple ID和密码。

答案 3 :(得分:2)

我给出的理由是:

  1. 如果您使用应用外部的订阅群组,则用户可以更改其产品。
  2. 自动续订订阅可以在您的应用外续订。
  3. 在应用重启之前,应用不会接收在应用外发起的交易。
  4. 用户可以在当前设备上的应用外部使用相同的appleID在其他设备上购物。
  5. 在我们的appDelegate:application didFinishLaunchingWithOptions中,我们初始化一个调用的类 [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 监控从应用内发起的购买。

答案 4 :(得分:0)

没有必要,但有益于以下原因:

  1. 您将始终获得一套明确的购买产品,而无需用户手动恢复产品。

  2. 您有(有限的)欺诈保护,特别是如果您结合本地和远程验证。

  3. 计算使用配方自动续订订阅的截止日期会更简单。