我正在我的 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:
?如果磁盘上的收据数据始终相同,那么我每次都向我的服务器发送相同的二进制数据,有时可能很多。
文档链接在答案中表示赞赏。