// // KMPurchaseManager.swift // PDF Reader Pro // // Created by lizhe on 2023/6/1. // import Cocoa @objc enum KMPurchaseManagerState: Int, CaseIterable { case unknow = 0//"unknow" case trial = 1//"Trial" //试用 case trialExpired = 2//"Trial Expired" //试用过期 case subscription = 3//"Subscription" //订阅 case subscriptionExpired = 4//"Subscription Expired" //订阅过期 } #if VERSION_DMG #endif typealias KMPurchaseCompletion = (_ isSuccess: Bool, _ error: KMInAppPurchaseState) -> Void typealias KMPurchaseFetchProductCompletion = (_ isSuccess: Bool, _ products: Array, _ error: KMInAppPurchaseState?) -> Void typealias KMPurchaseRestoreCompletion = (_ isSuccess: Bool, _ error: KMInAppPurchaseState) -> Void typealias KMPurchaseCheckSubscriptionStatusCompletion = (_ isSubscription: Bool) -> Void class KMPurchaseManager: NSObject { public static let manager = KMPurchaseManager() var state: KMPurchaseManagerState { get { #if DEBUG //方便调整订阅状态 // return .subscription #endif if (IAPProductsManager.default().isAvailableAllFunction()) { return .subscription } if KMInAppPurchaseManager.manager.state == .subscription { return .subscription } else { return KMDMGPurchaseManager.manager.state } } } var availableProducts: [KMProduct] = [] override init() { super.init() } func fetchProducts(completeion: @escaping KMPurchaseFetchProductCompletion) { KMPrint("获取产品中") #if VERSION_FREE KMPrint("正在获取产品中AppStore") KMInAppPurchaseManager.manager.fetchProducts(completion: completeion) #endif #if VERSION_DMG KMPrint("正在获取产品中DMG") KMDMGPurchaseManager.manager.fetchProducts(completion: completeion) #endif } func purchaseProduct(productIdentifier: String, completion: @escaping KMPurchaseCompletion) { KMPrint("准备订阅中") #if VERSION_FREE KMPrint("正在订阅中AppStore") #endif #if VERSION_DMG KMPrint("正在订阅中DMG") var email: String = UserDefaults.standard.value(forKey: "kLoginEmail") as? String ?? "" KMDMGPurchaseManager.manager.purchaseProduct(productIdentifier: productIdentifier, email: email, completion: completion) #endif } func showStore() { } func showPurchasesInfo() { } func restorePurchases(_ completion: @escaping KMPurchaseRestoreCompletion) { KMPrint("准备restore") #if VERSION_FREE KMPrint("正在restore") KMInAppPurchaseManager.manager.restorePurchases("", completion) #endif #if VERSION_DMG KMDMGPurchaseManager.manager.restorePurchases() KMPrint("正在restore DMG") #endif } func checkSubscriptionStatus(_ completion: @escaping KMPurchaseCheckSubscriptionStatusCompletion) { #if VERSION_FREE KMInAppPurchaseManager.manager.checkSubscriptionStatus(completion) #endif #if VERSION_DMG #endif } }