Selaa lähdekoodia

Merge pull request #360 from mattbarker016/master

Swift 4.1 / Xcode 9.3 Support
Andrea Bizzotto 7 vuotta sitten
vanhempi
commit
fd26b52ee2
2 muutettua tiedostoa jossa 26 lisäystä ja 8 poistoa
  1. 1 1
      README.md
  2. 25 7
      SwiftyStoreKit/InAppReceipt.swift

+ 1 - 1
README.md

@@ -7,7 +7,7 @@
 [![Issues](https://img.shields.io/github/issues/bizz84/SwiftyStoreKit.svg?style=flat)](https://github.com/bizz84/SwiftyStoreKit/issues)
 [![Issues](https://img.shields.io/github/issues/bizz84/SwiftyStoreKit.svg?style=flat)](https://github.com/bizz84/SwiftyStoreKit/issues)
 [![Cocoapod](http://img.shields.io/cocoapods/v/SwiftyStoreKit.svg?style=flat)](http://cocoadocs.org/docsets/SwiftyStoreKit/)
 [![Cocoapod](http://img.shields.io/cocoapods/v/SwiftyStoreKit.svg?style=flat)](http://cocoadocs.org/docsets/SwiftyStoreKit/)
 [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
 [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
-[![Downloads](https://img.shields.io/cocoapods/dm/SwiftyStoreKit.svg)]()
+[![Downloads](https://img.shields.io/cocoapods/dm/SwiftyStoreKit.svg)](https://cocoapods.org/pods/SwiftyStoreKit)
 [![Twitter](https://img.shields.io/badge/twitter-@biz84-blue.svg?maxAge=2592000)](http://twitter.com/biz84)
 [![Twitter](https://img.shields.io/badge/twitter-@biz84-blue.svg?maxAge=2592000)](http://twitter.com/biz84)
 
 
 SwiftyStoreKit is a lightweight In App Purchases framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+.
 SwiftyStoreKit is a lightweight In App Purchases framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+.

+ 25 - 7
SwiftyStoreKit/InAppReceipt.swift

@@ -96,7 +96,12 @@ internal class InAppReceipt {
         let filteredReceiptsInfo = filterReceiptsInfo(receipts: receipts, withProductIds: [productId])
         let filteredReceiptsInfo = filterReceiptsInfo(receipts: receipts, withProductIds: [productId])
         let nonCancelledReceiptsInfo = filteredReceiptsInfo.filter { receipt in receipt["cancellation_date"] == nil }
         let nonCancelledReceiptsInfo = filteredReceiptsInfo.filter { receipt in receipt["cancellation_date"] == nil }
 
 
-        let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) }
+        #if swift(>=4.1)
+            let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) }
+        #else
+            let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) }
+        #endif
+        
         // Verify that at least one receipt has the right product id
         // Verify that at least one receipt has the right product id
         if let firstItem = receiptItems.first {
         if let firstItem = receiptItems.first {
             return .purchased(item: firstItem)
             return .purchased(item: firstItem)
@@ -133,7 +138,11 @@ internal class InAppReceipt {
 
 
         let receiptDate = getReceiptRequestDate(inReceipt: receipt) ?? date
         let receiptDate = getReceiptRequestDate(inReceipt: receipt) ?? date
 
 
-        let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) }
+        #if swift(>=4.1)
+            let receiptItems = nonCancelledReceiptsInfo.compactMap { ReceiptItem(receiptInfo: $0) }
+        #else
+            let receiptItems = nonCancelledReceiptsInfo.flatMap { ReceiptItem(receiptInfo: $0) }
+        #endif
 
 
         if nonCancelledReceiptsInfo.count > receiptItems.count {
         if nonCancelledReceiptsInfo.count > receiptItems.count {
             print("receipt has \(nonCancelledReceiptsInfo.count) items, but only \(receiptItems.count) were parsed")
             print("receipt has \(nonCancelledReceiptsInfo.count) items, but only \(receiptItems.count) were parsed")
@@ -163,12 +172,21 @@ internal class InAppReceipt {
                 return (expirationDate, $0)
                 return (expirationDate, $0)
             }
             }
         } else {
         } else {
-            return receiptItems.flatMap {
-                if let expirationDate = $0.subscriptionExpirationDate {
-                    return (expirationDate, $0)
+            #if swift(>=4.1)
+                return receiptItems.compactMap {
+                    if let expirationDate = $0.subscriptionExpirationDate {
+                        return (expirationDate, $0)
+                    }
+                    return nil
                 }
                 }
-                return nil
-            }
+            #else
+                return receiptItems.flatMap {
+                    if let expirationDate = $0.subscriptionExpirationDate {
+                        return (expirationDate, $0)
+                    }
+                    return nil
+                }
+            #endif
         }
         }
     }
     }