/// Copyright (c) 2018 Razeware LLC /// /// Permission is hereby granted, free of charge, to any person obtaining a copy /// of this software and associated documentation files (the "Software"), to deal /// in the Software without restriction, including without limitation the rights /// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell /// copies of the Software, and to permit persons to whom the Software is /// furnished to do so, subject to the following conditions: /// /// The above copyright notice and this permission notice shall be included in /// all copies or substantial portions of the Software. /// /// Notwithstanding the foregoing, you may not use, copy, modify, merge, publish, /// distribute, sublicense, create a derivative work, and/or sell copies of the /// Software in any work that is designed, intended, or marketed for pedagogical or /// instructional purposes related to programming, coding, application development, /// or information technology. Permission for such use, copying, modification, /// merger, publication, distribution, sublicensing, creation of derivative works, /// or sale is expressly withheld. /// /// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR /// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, /// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE /// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER /// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, /// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN /// THE SOFTWARE. import Foundation public struct VersioneProProducts { public enum Identifier { static let ProVersionFullPrice = "com.finazzi.distquake.ProPrezzoPieno" static let ProVersionDiscounted = "com.finazzi.distquake.VersioneProScontata" static let Subscription10kMonthly = "com.finazzi.distquake.Abbonamento10k.mensileAutomatico" static let Subscription10kYearly = "com.finazzi.distquake.Abbonamento10k.annualeAutomatico" static let Subscription10kYearlyDiscounted = "com.finazzi.distquake.Abbonamento10k.annualeAutomaticoScontato" static let Subscription100kMonthly = "com.finazzi.distquake.Abbonamento100k.mensileAutomatico" static let Subscription100kYearly = "com.finazzi.distquake.Abbonamento100k.annualeAutomatico" static let Subscription100kYearlyDiscounted = "com.finazzi.distquake.Abbonamento100k.annualeAutomaticoscontato" static let identifiers: Set = [ ProVersionFullPrice, ProVersionDiscounted, Subscription10kMonthly, Subscription10kYearly, Subscription10kYearlyDiscounted, Subscription100kMonthly, Subscription100kYearly, Subscription100kYearlyDiscounted ] static let identifierForProVersion: Set = [ ProVersionFullPrice, ProVersionDiscounted, Subscription10kYearly, Subscription10kYearlyDiscounted, Subscription100kYearly, Subscription100kYearlyDiscounted ] static let identifiersForTop10k: Set = [ Subscription10kMonthly, Subscription10kYearly, Subscription10kYearlyDiscounted ] static let identifiersForTop100k: Set = [ Subscription100kMonthly, Subscription100kYearly, Subscription100kYearlyDiscounted ] static let identifierForSubscriptions: Set = [ Subscription10kMonthly, Subscription100kMonthly, Subscription10kYearly, Subscription10kYearlyDiscounted, Subscription100kYearly, Subscription100kYearlyDiscounted ] static func isSubscription(for identifier: String) -> Bool { Self.identifierForSubscriptions.contains(identifier) } } public static let store = IAPHelper(productIds: VersioneProProducts.Identifier.identifiers) } func resourceNameForProductIdentifier(_ productIdentifier: String) -> String? { return productIdentifier.components(separatedBy: ".").last } func imageForProductIdentifier(_ productIdentifier: String) -> UIImage? { let products100k = [VersioneProProducts.Identifier.Subscription100kMonthly, VersioneProProducts.Identifier.Subscription100kYearly, VersioneProProducts.Identifier.Subscription100kYearlyDiscounted] if products100k.contains(productIdentifier) { return UIImage(named: "top_100k") } let products10k = [VersioneProProducts.Identifier.Subscription10kMonthly, VersioneProProducts.Identifier.Subscription10kYearly, VersioneProProducts.Identifier.Subscription10kYearlyDiscounted] if products10k.contains(productIdentifier) { return UIImage(named: "top_10k") } return nil } func is100kSubscriptionForProductIdentifier(_ productIdentifier: String) -> Bool { let products100k = [VersioneProProducts.Identifier.Subscription100kMonthly, VersioneProProducts.Identifier.Subscription100kYearly, VersioneProProducts.Identifier.Subscription100kYearlyDiscounted] return products100k.contains(productIdentifier) }