123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import Foundation
- import SwiftUI
- import StoreKit
- @available(macOS 12.0, *)
- @objc final class TransactionObserver: NSObject {
-
- var updates: Task<Void, Never>? = nil
-
-
- static let shared = TransactionObserver()
-
- override init() {
- super.init()
- updates = newTransactionListenerTask()
- }
- deinit {
-
- updates?.cancel()
- }
-
- private func newTransactionListenerTask() -> Task<Void, Never> {
- Task(priority: .background) {
- for await verificationResult in Transaction.updates {
- self.handle(updatedTransaction: verificationResult)
- }
-
-
- }
- }
-
- private func handle(updatedTransaction verificationResult: VerificationResult<StoreKit.Transaction>) {
- guard case .verified(let transaction) = verificationResult else {
-
- return
- }
- print("同步购买信息:\(transaction)")
- if let revocationDate = transaction.revocationDate {
-
-
-
-
- } else if let expirationDate = transaction.expirationDate,
- expirationDate < Date() {
-
- print("订阅过期")
- } else if transaction.isUpgraded {
-
-
- } else {
-
-
-
- }
-
- let man = IAPProductsManager.default()
- man?.winbackUpdateTransaction(withProdcutId: transaction.productID, expiredDate: transaction.expirationDate?.timeIntervalSince1970 ?? 0)
-
- }
-
- }
|