ソースを参照

Preparing to hook PaymentQueueController in SwiftyStoreKit

Andrea Bizzotto 8 年 前
コミット
9ec02899cf

+ 8 - 0
SwiftyStoreKit/PaymentQueueController.swift

@@ -114,6 +114,14 @@ public class PaymentQueueController: NSObject, SKPaymentTransactionObserver {
         completeTransactionsController.completeTransactions = completeTransactions
         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
     // MARK: SKPaymentTransactionObserver
     public func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
     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
     // 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 inflightQueries: [Set<String>: InAppProductQueryRequest] = [:]
+    private var paymentQueueController = PaymentQueueController(paymentQueue: SKPaymentQueue.default())
+    
     private var inflightPurchases: [String: InAppProductPurchaseRequest] = [:]
     private var inflightPurchases: [String: InAppProductPurchaseRequest] = [:]
     private var restoreRequest: InAppProductPurchaseRequest?
     private var restoreRequest: InAppProductPurchaseRequest?
     private var completeTransactionsObserver: InAppCompleteTransactionsObserver?
     private var completeTransactionsObserver: InAppCompleteTransactionsObserver?
@@ -112,6 +114,8 @@ public class SwiftyStoreKit {
     
     
     public class func restorePurchases(atomically: Bool = true, completion: @escaping (RestoreResults) -> ()) {
     public class func restorePurchases(atomically: Bool = true, completion: @escaping (RestoreResults) -> ()) {
 
 
+        // TODO: paymentQueueController.restorePurchases
+
         sharedInstance.restoreRequest = InAppProductPurchaseRequest.restorePurchases(atomically: atomically) { results in
         sharedInstance.restoreRequest = InAppProductPurchaseRequest.restorePurchases(atomically: atomically) { results in
         
         
             sharedInstance.restoreRequest = nil
             sharedInstance.restoreRequest = nil
@@ -207,6 +211,8 @@ public class SwiftyStoreKit {
             completion(.error(error: .paymentNotAllowed))
             completion(.error(error: .paymentNotAllowed))
             return
             return
         }
         }
+        
+        // TODO: paymentQueueController.startPayment
 
 
         inflightPurchases[product.productIdentifier] = InAppProductPurchaseRequest.startPayment(product: product, atomically: atomically, applicationUsername: applicationUsername) { results in
         inflightPurchases[product.productIdentifier] = InAppProductPurchaseRequest.startPayment(product: product, atomically: atomically, applicationUsername: applicationUsername) { results in