我正在我的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:一次?如果磁盘上的收据数据一直都是相同的,那么我每次都会向服务器发送相同的二进制数据,有时可能会很多。
欢迎在答案中使用文档链接。
发布于 2020-11-16 19:06:52
对于订阅,您只需为所有事务进行一次调用。重要的是,您正在验证收据上的授权。所以,只要你的服务器正在查看整个收据,你就应该很好。
对于其他IAP类型,需要对每个更新的事务进行验证。
https://stackoverflow.com/questions/64655232
复制相似问题