gpt4 book ai didi

ios - 我应该什么时候验证应用内购买交易收据?

转载 作者:IT王子 更新时间:2023-10-29 08:11:48 26 4
gpt4 key购买 nike

我的意思是,我的脚步应该是?

1) Get SKPaymentTransactionStatePurchased

2) Remove it from SKPaymentQueue and provide the content by [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

3) Validate the receipt and then, if it's invalid, block the content i've just provided

或者我应该将第 2 步改为第 3 步吗?

1) Get SKPaymentTransactionStatePurchased

2) Validate the receipt and then, if it's invalid, dont't provide content

3) Remove it from SKPaymentQueue anyway [[SKPaymentQueue defaultQueue] finishTransaction: transaction];

在第一种情况下,用户可以在购买后立即关闭互联网,因此我无法验证收据。但在第二步中,在步骤 1 和步骤 2 之间可能会出现一些网络问题,所以我不会完成交易,也不会提供内容,这将是一个糟糕的用户体验。

那么您为您的应用选择了什么方式,为什么?

我的选择

我选择了第二种情况,因为选择第一种情况会使我的应用程序很容易被 iAP Cracker 破解。

最佳答案

场景 2。如果互联网崩溃,您将无法到达 -finishTransaction。但这很酷,因为您可以重试 (NSTimer) 并且您的应用程序将在启动时获得未完成的事务。这就是 StoreKit 设计的工作方式(尽管阅读文档时并不明显)。

StoreKit 带有事务,这是有充分理由的。用户可以在购买后立即退出应用程序,您仍然需要从中恢复。这就是为什么 Apple 建议在应用程序生命周期中尽快设置您的事务观察器。

永远不要在提供内容之前完成交易,你必须在 StoreKit 之上实现你自己的交易系统,而你不想这样做,相信我(我已经看到它完成了,这是一场灾难)。

编辑:老实说,最终用户在购买后和您验证之前关闭互联网的几率低得离谱。这家伙一秒钟前还在上网,没有人会在购买过程中出去切断互联网。但是用户有可能在那一刻被打断并将您的应用程序发送到后台。然后,您的应用可能会因 iOS 认为适当的任何原因而被终止。当您的应用程序再次启动时,您的应用程序将不记得开始时进行过购买,并且商店工具包不会有太大帮助,因为您已经完成了交易。

关于ios - 我应该什么时候验证应用内购买交易收据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9987334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com