瀏覽代碼

Preparing to hook PaymentQueueController in SwiftyStoreKit

Andrea Bizzotto 8 年之前
父節點
當前提交
9ec02899cf
共有 2 個文件被更改,包括 14 次插入0 次删除
  1. 8 0
      SwiftyStoreKit/PaymentQueueController.swift
  2. 6 0
      SwiftyStoreKit/SwiftyStoreKit.swift

+ 8 - 0
SwiftyStoreKit/PaymentQueueController.swift

@@ -114,6 +114,14 @@ public class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
         completeTransactionsController.completeTransactions = completeTransactions
     }
     
+    public func finishTransaction(_ transaction: PaymentTransaction) {
+        guard let skTransaction = transaction as? SKPaymentTransaction else {
+            print("Object is not a SKPaymentTransaction: \(transaction)")
+            return
+        }
+        paymentQueue.finishTransaction(skTransaction)
+    }
+
     
     // MARK: SKPaymentTransactionObserver
     public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {

+ 6 - 0
SwiftyStoreKit/SwiftyStoreKit.swift

@@ -47,6 +47,8 @@ public class SwiftyStoreKit {
 
     // As we can have multiple inflight queries and purchases, we store them in a dictionary by product id
     private var inflightQueries: [Set<String>: InAppProductQueryRequest] = [:]
+    private var paymentQueueController = PaymentQueueController(paymentQueue: SKPaymentQueue.default())
+    
     private var inflightPurchases: [String: InAppProductPurchaseRequest] = [:]
     private var restoreRequest: InAppProductPurchaseRequest?
     private var completeTransactionsObserver: InAppCompleteTransactionsObserver?
@@ -112,6 +114,8 @@ public class SwiftyStoreKit {
     
     public class func restorePurchases(atomically: Bool = true, completion: @escaping (RestoreResults) -> ()) {
 
+        // TODO: paymentQueueController.restorePurchases
+
         sharedInstance.restoreRequest = InAppProductPurchaseRequest.restorePurchases(atomically: atomically) { results in
         
             sharedInstance.restoreRequest = nil
@@ -207,6 +211,8 @@ public class SwiftyStoreKit {
             completion(.error(error: .paymentNotAllowed))
             return
         }
+        
+        // TODO: paymentQueueController.startPayment
 
         inflightPurchases[product.productIdentifier] = InAppProductPurchaseRequest.startPayment(product: product, atomically: atomically, applicationUsername: applicationUsername) { results in