【发布时间】:2021-02-15 16:21:31
【问题描述】:
我正在我的 iOS 应用中实现自动更新订阅。我的事务处理看起来像这样的伪代码:
func paymentQueue(_queue: SKPaymentQueue, updatedTransactions transactions:[SKPaymentTransaction]) {
for (t in transactions) {
let data = Data(contentsOf: getReceiptUrl())
//this is actually async, but for simplicity here it's just a straight return
if verifyReceiptWithServer(data) == .success {
print("Verified receipt successfully!")
}
queue.finishTransaction(t)
}
}
如果在我的应用未激活时订阅多次续订,我可以在此处为每个产品获得不止一次的交易。有时,该应用程序在重新安装时也会同时获得大量旧交易。我需要验证每笔交易吗?还是每个productIdentifier 只做一个更好?或者甚至每次调用paymentQueue:updatedTransactions: 一次?如果磁盘上的收据数据始终相同,那么我每次向服务器发送相同的二进制数据,有时可能很多。
文档链接在答案中表示赞赏。
【问题讨论】:
标签: ios storekit receipt-validation skpaymenttransaction