From 8f0888670ad5ccbf1a10dc798fcee055216cfb97 Mon Sep 17 00:00:00 2001 From: Matt Coneybeare Date: Mon, 27 Feb 2017 12:26:08 -0500 Subject: [PATCH 1/5] update podspec --- Armchair.podspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Armchair.podspec b/Armchair.podspec index d4fe553..e32bdf9 100644 --- a/Armchair.podspec +++ b/Armchair.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Armchair" - s.version = "0.1.1" + s.version = "0.1.2" s.summary = "A simple yet powerful App Review Manager for iOS and OSX in Swift" s.description = <<-DESC A simple yet powerful App Review Manager for iOS and OSX in Swift. From 14c89be4b9d4fd835836ff1da76cae40374e83bc Mon Sep 17 00:00:00 2001 From: Mohammad Asgharneya Date: Thu, 16 Mar 2017 14:59:04 -0400 Subject: [PATCH 2/5] Fixed issue with Carthage building project using the wrong toolchain --- Armchair.xcodeproj/project.pbxproj | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Armchair.xcodeproj/project.pbxproj b/Armchair.xcodeproj/project.pbxproj index 0180ac0..97bbe9b 100644 --- a/Armchair.xcodeproj/project.pbxproj +++ b/Armchair.xcodeproj/project.pbxproj @@ -725,7 +725,6 @@ SWIFT_OBJC_BRIDGING_HEADER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 3.0; - }; name = Debug; }; @@ -747,7 +746,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OBJC_BRIDGING_HEADER = ""; - SWIFT_VERSION = 2.3; + SWIFT_VERSION = 3.0; }; name = Release; }; From 7299a7067a1935ed0e1da63e1a919b94d1441e60 Mon Sep 17 00:00:00 2001 From: Ariel Date: Fri, 5 May 2017 15:38:20 -0400 Subject: [PATCH 3/5] Add support for iOS 10.3 review prompt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added an option to use SKStoreReviewController review prompt instead of the default prompt. If it’s not available (below iOS 10.3), just use the default prompt. --- Source/Armchair.swift | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Source/Armchair.swift b/Source/Armchair.swift index 9e963be..129a6be 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -69,6 +69,18 @@ public func reviewTitle(_ reviewTitle: String) { Manager.defaultManager.reviewTitle = reviewTitle } +/* + * If set to true, use SKStoreReviewController's requestReview() prompt instead of the default prompt. + * If not on iOS 10.3+, reort to the default prompt. + * Default => false. + */ +public func useStoreKitReviewPrompt() -> Bool { + return Manager.defaultManager.useStoreKitReviewPrompt +} +public func useStoreKitReviewPrompt(_ useStoreKitReviewPrompt: Bool) { + Manager.defaultManager.useStoreKitReviewPrompt = useStoreKitReviewPrompt +} + /* * Get/Set the message to use on the review prompt. * Default value is a localized @@ -870,6 +882,7 @@ open class Manager : ArmchairManager { fileprivate var tintColor: UIColor? = nil fileprivate lazy var usesAlertController: Bool = self.defaultUsesAlertController() fileprivate lazy var opensInStoreKit: Bool = self.defaultOpensInStoreKit() + fileprivate var useStoreKitReviewPrompt: Bool = false fileprivate func defaultOpensInStoreKit() -> Bool { return operatingSystemVersion >= 8 @@ -1199,6 +1212,10 @@ open class Manager : ArmchairManager { } } else { #if os(iOS) + if #available(iOS 10.3, *), useStoreKitReviewPrompt { + SKStoreReviewController.requestReview() + return + } if (operatingSystemVersion >= 8 && usesAlertController) || operatingSystemVersion >= 9 { /* iOS 8 uses new UIAlertController API*/ let alertView : UIAlertController = UIAlertController(title: reviewTitle, message: reviewMessage, preferredStyle: UIAlertControllerStyle.alert) From 61639292752ea532ea8acec125ce08bf78d11753 Mon Sep 17 00:00:00 2001 From: rainesbt Date: Wed, 10 May 2017 14:58:42 -0400 Subject: [PATCH 4/5] Ensure didDisplayAlertClosure called for UIAlertController * didDisplayAlertClosure not being called in the case of using UIAlertView --- Source/Armchair.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/Armchair.swift b/Source/Armchair.swift index 129a6be..6418891 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -1237,7 +1237,10 @@ open class Manager : ArmchairManager { // get the top most controller (= the StoreKit Controller) and dismiss it if let presentingController = UIApplication.shared.keyWindow?.rootViewController { if let topController = topMostViewController(presentingController) { - topController.present(alertView, animated: usesAnimation) { + topController.present(alertView, animated: usesAnimation) { [weak self] _ in + if let closure = self?.didDisplayAlertClosure { + closure() + } print("presentViewController() completed") } } From 0db2bb6fb0c3faa88425da5e5a1561063d5dc2a3 Mon Sep 17 00:00:00 2001 From: Ariel Date: Thu, 11 May 2017 13:00:32 -0400 Subject: [PATCH 5/5] Fix infinite prompts when using StoreKit prompt --- Source/Armchair.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Source/Armchair.swift b/Source/Armchair.swift index 129a6be..05c7cd5 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -1214,6 +1214,10 @@ open class Manager : ArmchairManager { #if os(iOS) if #available(iOS 10.3, *), useStoreKitReviewPrompt { SKStoreReviewController.requestReview() + // Assume this version is rated. There is no API to tell if the user actaully rated. + userDefaultsObject?.setBool(true, forKey: keyForArmchairKeyType(ArmchairKey.RatedCurrentVersion)) + userDefaultsObject?.setBool(true, forKey: keyForArmchairKeyType(ArmchairKey.RatedAnyVersion)) + userDefaultsObject?.synchronize() return } if (operatingSystemVersion >= 8 && usesAlertController) || operatingSystemVersion >= 9 {