diff --git a/README.md b/README.md index daffdd12..6060ffd0 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![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/) [![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) SwiftyStoreKit is a lightweight In App Purchases framework for iOS 8.0+, tvOS 9.0+ and macOS 10.10+. diff --git a/SwiftyStoreKit/InAppReceipt.swift b/SwiftyStoreKit/InAppReceipt.swift index e6693995..e86abbf6 100644 --- a/SwiftyStoreKit/InAppReceipt.swift +++ b/SwiftyStoreKit/InAppReceipt.swift @@ -96,7 +96,12 @@ internal class InAppReceipt { let filteredReceiptsInfo = filterReceiptsInfo(receipts: receipts, withProductIds: [productId]) 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 if let firstItem = receiptItems.first { return .purchased(item: firstItem) @@ -133,7 +138,11 @@ internal class InAppReceipt { 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 { print("receipt has \(nonCancelledReceiptsInfo.count) items, but only \(receiptItems.count) were parsed") @@ -163,12 +172,21 @@ internal class InAppReceipt { return (expirationDate, $0) } } 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 } }