收据验证Apple docs表示在发布后立即执行收据验证。这相当于检查[[NSBundle mainBundle] appStoreRecieptURL]
返回的路径中的数据,如果不存在则通过SKReceiptRefreshRequest
刷新,并验证它。上述文档引用了iOS和macOS。
iOS上实际上是否必要?如果是这样,为什么?是阻止用户在越狱设备上使用我的应用程序,还是没有从应用程序商店购买它(在这种情况下,我可能不关心我的应用程序是免费的)?或者它是否会对恢复或验证应用内购买等其他操作产生影响?例如,收据数据是否已经存在以验证应用内购买的交易?
注意:我没有使用应用内订阅。我有应用内购买,但在验证并记录购买服务器端后,我不使用收据。
答案 0 :(得分:8)
你不需要这样做,这只是可选的,可以在iOS7 +上完成,如果你有兴趣这样做的话。
简单地说,实施验证纯粹是财务决定,即使您验证了配方,建议您在发生故障时不要禁用内容,因为验证可能会在标准环境中随时失败(例如,如果没有连接),这种过度反应可能会破坏消费者的体验。
总之,当你被允许在失败的情况下禁用内容时,无论出于何种原因,在实践中对OSX进行验证是有意义的。但是如果你觉得你的消费者比你的收入更多,或者被盗内容的数量超出你的保证金额,那么在iOS上也可能值得这样做。
注意: 一般情况下,您可以在Apple's Documentation中详细了解收据验证的技术细节。
答案 1 :(得分:4)
您问题的简单答案是不,没有必要。
以下是详细说明。
答案 2 :(得分:3)
您通常只会验证收据,以防止未购买应用的用户或使用自动续订订阅的用户进行盗版。
虽然您可以查询IAP信息的收据,但实际上更容易(并且需要通过应用审核)在某个地方提供按钮以“恢复以前的购买”并致电
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
对于用户来说,如果按下“恢复购买”按钮而不是在应用启动时无法解释,可能会提示用户输入Apple ID和密码。
答案 3 :(得分:2)
我给出的理由是:
在我们的appDelegate:application didFinishLaunchingWithOptions中,我们初始化一个调用的类 [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 监控从应用内发起的购买。
答案 4 :(得分:0)
没有必要,但有益于以下原因:
您将始终获得一套明确的购买产品,而无需用户手动恢复产品。
您有(有限的)欺诈保护,特别是如果您结合本地和远程验证。
计算使用配方自动续订订阅的截止日期会更简单。