Browse Source

【订阅】购买成功后 成功弹窗弹出逻辑调整

lizhe 1 year ago
parent
commit
08a3c6acad

+ 3 - 5
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift

@@ -245,13 +245,11 @@ class KMComparativeTableViewController: NSWindowController {
                         KMPrint("订阅成功")
                         comparativeController = nil
                         comparativeMainWindow?.endSheet(controller.window!)
-                        comparativeMainWindow = nil
                         controller.close()
 
-                        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1.0) {
-                            if NSApp.mainWindow != nil {
-                                _ = KMSubscribeSuccessWindowController.show(window: NSApp.mainWindow!)
-                            }
+                        if comparativeMainWindow != nil {
+                            _ = KMSubscribeSuccessWindowController.show(window: comparativeMainWindow!)
+                            comparativeMainWindow = nil
                         }
                     } else {
                         KMComparativeTableViewController.purchasefailed(view: comparativeController?.comparativeView, state: error)

+ 11 - 17
PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/KMSubscribeWaterMarkWindowController.swift

@@ -133,17 +133,19 @@ class KMSubscribeWaterMarkWindowController: NSWindowController {
                         subscribeWaterMarkMainWindow?.endSheet(controller.window!)
                         controller.window?.close()
                         subscribeWaterMarkController = nil
-                        subscribeWaterMarkMainWindow = nil
+//                        subscribeWaterMarkMainWindow = nil
                         
-                        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1.0) {
-                            if NSApp.mainWindow != nil {
-                                let controller = KMSubscribeSuccessWindowController.show(window: NSApp.mainWindow!)
-                                controller.closeAction = { controller in
-                                    controller.closeWindow()
-                                    completion(true, false, false)
-                                }
+                        if subscribeWaterMarkMainWindow != nil {
+                            let controller = KMSubscribeSuccessWindowController.show(window: subscribeWaterMarkMainWindow!)
+                            controller.closeAction = { controller in
+                                controller.closeWindow()
+                                completion(true, false, false)
                             }
+                            subscribeWaterMarkMainWindow = nil
+                        } else {
+                            completion(true, false, false)
                         }
+                        
                     } else {
                         KMComparativeTableViewController.purchasefailed(view: subscribeWaterMarkController?.waterMarkView, state: error)
                         completion(false, false, false)
@@ -162,15 +164,7 @@ class KMSubscribeWaterMarkWindowController: NSWindowController {
                         subscribeWaterMarkController = nil
                         subscribeWaterMarkMainWindow = nil
                         
-                        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1.0) {
-                            if NSApp.mainWindow != nil {
-                                let controller = KMSubscribeSuccessWindowController.show(window: NSApp.mainWindow!)
-                                controller.closeAction = { controller in
-                                    controller.closeWindow()
-                                    completion(true, false, false)
-                                }
-                            }
-                        }
+                        completion(true, false, false)
                     } else {
                         if error != .restoreSuccess {
                             KMComparativeTableViewController.purchasefailed(view: subscribeWaterMarkController?.waterMarkView, state: error)

+ 19 - 3
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift

@@ -204,6 +204,16 @@ extension KMInAppPurchaseManager: SKProductsRequestDelegate {
 }
 
 extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
+    func paymentQueueDidChangeStorefront(_ queue: SKPaymentQueue) {
+        KMPrint("paymentQueueDidChangeStorefront")
+    }
+
+    
+    // Sent when entitlements for a user have changed and access to the specified IAPs has been revoked.
+    func paymentQueue(_ queue: SKPaymentQueue, didRevokeEntitlementsForProductIdentifiers productIdentifiers: [String]) {
+        KMPrint("didRevokeEntitlementsForProductIdentifiers")
+    }
+    
     func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
         // Handle the purchase intent here
         // Return true to allow the purchase or false to deny it
@@ -211,7 +221,7 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
     }
     
     func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
-        KMPrint("服务器返回数据")
+        KMPrint("苹果服务器返回数据")
         if transactions.count > 0 {
             var resultTransaction = transactions.first!
             var isExist = false
@@ -242,10 +252,16 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
                 }
             }
             if !isExist {
-                handleError(transaction: resultTransaction)
+                self.handleAction(state: .productCorrespondenceFailed)
             }
         } else {
-            handleError(transaction: nil)
+            self.handleAction(state: .productCorrespondenceFailed)
+        }
+        
+        for transaction in queue.transactions {
+            if transaction.transactionState != .purchasing {
+                SKPaymentQueue.default().finishTransaction(transaction)
+            }
         }
     }