gpt4 book ai didi

iphone - 弃用的 TransactionReceipt

转载 作者:太空狗 更新时间:2023-10-30 03:10:26 31 4
gpt4 key购买 nike

我正在使用此代码进行应用内购买,它取自 RaywernderLich 的教程。

// Encode the receiptData for the itms receipt verification POST request.
NSString *jsonObjectString = [self encodeBase64:(uint8_t *)transaction.transactionReceipt.bytes
length:transaction.transactionReceipt.length];

现在 Xcode 正在说

'transactionReceipt' is deprecated: first deprecated in iOS 7.0

如何解决?

最佳答案

关于弃用

由于这个问题在技术上是在询问应该如何解决已弃用的属性,因此可以公平地假设 OP 仍在低于 7 的 iOS 版本上部署。因此,您需要检查更新的 API 的可用性,而不是盲目调用它:

Objective-C

编辑正如评论中所指出的,您不能在 NSBundle 上使用 respondsToSelector,因为该 API 在以前的 iOS 版本中是私有(private)的

NSData *receiptData;
if (NSFoundationVersionNumber >= NSFoundationVersionNumber_iOS_7_0) {
receiptData = [NSData dataWithContentsOfURL:[[NSBundle mainBundle] appStoreReceiptURL]];
} else {
receiptData = transaction.transactionReceipt;
}
//now you can convert receiptData into string using whichever encoding:)

swift

由于 Swift 只能部署在 iOS 7 及更高版本上,我们可以安全地使用 appStoreReceiptURL

if let receiptData = NSData(contentsOfURL: NSBundle.mainBundle().appStoreReceiptURL!) {
//we have a receipt
}

关于收据验证

较新的 API 收据现在包含用户执行的所有交易的列表。 documentation清楚地勾勒出收据的样子:

receipt outline

这意味着如果您真的非常想这样做,您可以遍历收据中包含的所有项目以针对每笔交易进行验证。

有关收据验证的更多信息,您可以阅读 obc.io

关于iphone - 弃用的 TransactionReceipt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682663/

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