有什么方法可以快速识别下面委托中的新购买。
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
for transaction in transactions {
switch transaction.transactionState {
case .purchased:
hideLoader()
if let transactionID = transaction.transactionIdentifier {
print("Transaction ID: \(transactionID)")
SubscriptionViewController.store.complete(transaction: transaction)
// updateUserStatus(subscriptionType: currentSubscription)
validateReceipt(transId: transaction.transactionIdentifier ?? "") // after verify also update on backend
}
break
case .failed:
self.currentSubscription = nil
hideLoader()
SubscriptionViewController.store.fail(transaction: transaction)
break
case .restored:
hideLoader()
break
case .deferred:
hideLoader()
break
case .purchasing:
break
@unknown default:
hideLoader()
print("Unknown case happens")
break
}
}
}
当我已经拥有活跃会员资格时,我遇到问题,当我再次点击“购买”时,它显示您已经有活跃订阅,这是正确的,并且它提示两个选项,即“管理”或“确定”,当我点击“确定”时,我的上面的代表调用并再次进入已购买状态,上面的代表在我购买新产品时也调用,我只想对新购买的产品进行 destinguish ,因为我需要更新到服务器,任何人都可以告诉我如何仅在 UpdatedTransactions 中检查新购买方法。
您使用的 transactionId 会改变每个购买流程。因此,您无法将以前的订阅与新购买的订阅进行比较。您应该使用originalTransactionId。对于订阅产品和购买,originalTransactionId 是唯一的。您应该将其保存在服务器上,并在第二次订阅购买时,可以使用服务器上的originalTransactionId进行检查。
参考自; https://developer.apple.com/documentation/appstoreserverapi/originaltransactionid