From ce4432f0e2fccf368e45195f2684b452652740dd Mon Sep 17 00:00:00 2001 From: Matt Coneybeare Date: Thu, 24 Sep 2015 07:48:12 -0400 Subject: [PATCH 1/3] Updates for Swift 2 --- Armchair.xcodeproj/project.pbxproj | 14 +++++++- Example/Base.lproj/MainMenu.xib | 21 ++++++------ .../AppIcon.appiconset/Contents.json | 10 ++++++ .../LaunchImage.launchimage/Contents.json | 33 ++++++------------- Example/Info-Mac.plist | 2 +- Example/Info-iOS.plist | 2 +- Example/ViewController.swift | 26 +++++++-------- Mac Example.xcodeproj/project.pbxproj | 6 +++- Source/Armchair.swift | 4 +-- Source/Info-Localizable.plist | 2 +- Source/Info.plist | 2 +- Tests/Info.plist | 6 ++-- iOS Example.xcodeproj/project.pbxproj | 6 +++- 13 files changed, 76 insertions(+), 58 deletions(-) diff --git a/Armchair.xcodeproj/project.pbxproj b/Armchair.xcodeproj/project.pbxproj index 1831e5a..f9131de 100644 --- a/Armchair.xcodeproj/project.pbxproj +++ b/Armchair.xcodeproj/project.pbxproj @@ -355,7 +355,8 @@ F8111E2A19A95C8B0040E7D1 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0610; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = Armchair; TargetAttributes = { E6A0AF6419C9CFF400C3A7DC = { @@ -554,6 +555,7 @@ INSTALL_PATH = ""; MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = Armchair; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; @@ -570,6 +572,7 @@ INSTALL_PATH = ""; MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = Armchair; SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; @@ -592,6 +595,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 7.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; PRODUCT_NAME = Armchair; SDKROOT = macosx; @@ -616,6 +620,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 7.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_MODULE_NAME = "$(PRODUCT_NAME:c99extidentifier)"; PRODUCT_NAME = Armchair; SDKROOT = macosx; @@ -638,6 +643,7 @@ INFOPLIST_FILE = Tests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -652,6 +658,7 @@ INFOPLIST_FILE = Tests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -668,6 +675,7 @@ INSTALL_PATH = ""; MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = Armchair; SDKROOT = macosx; SKIP_INSTALL = YES; @@ -685,6 +693,7 @@ INSTALL_PATH = ""; MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = Armchair; SDKROOT = macosx; SKIP_INSTALL = YES; @@ -714,6 +723,7 @@ COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 1; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -793,6 +803,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OBJC_BRIDGING_HEADER = ""; @@ -812,6 +823,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_OBJC_BRIDGING_HEADER = ""; diff --git a/Example/Base.lproj/MainMenu.xib b/Example/Base.lproj/MainMenu.xib index 2fb7e8e..ebe4984 100644 --- a/Example/Base.lproj/MainMenu.xib +++ b/Example/Base.lproj/MainMenu.xib @@ -1,7 +1,8 @@ - + - + + @@ -675,7 +676,7 @@ - + @@ -692,7 +693,7 @@ - + @@ -750,13 +751,13 @@ - - - - - + + + + - + + diff --git a/Example/Images.xcassets/AppIcon.appiconset/Contents.json b/Example/Images.xcassets/AppIcon.appiconset/Contents.json index b7f3352..36d2c80 100644 --- a/Example/Images.xcassets/AppIcon.appiconset/Contents.json +++ b/Example/Images.xcassets/AppIcon.appiconset/Contents.json @@ -5,11 +5,21 @@ "size" : "29x29", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "40x40", "scale" : "2x" }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, { "idiom" : "iphone", "size" : "60x60", diff --git a/Example/Images.xcassets/LaunchImage.launchimage/Contents.json b/Example/Images.xcassets/LaunchImage.launchimage/Contents.json index 5a29666..a0ad363 100644 --- a/Example/Images.xcassets/LaunchImage.launchimage/Contents.json +++ b/Example/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -3,43 +3,30 @@ { "orientation" : "portrait", "idiom" : "ipad", - "minimum-system-version" : "7.0", "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "landscape", - "idiom" : "ipad", "minimum-system-version" : "7.0", - "extent" : "full-screen", "scale" : "1x" }, { "orientation" : "landscape", "idiom" : "ipad", - "minimum-system-version" : "7.0", "extent" : "full-screen", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", "minimum-system-version" : "7.0", - "scale" : "2x" - }, - { - "orientation" : "portrait", - "idiom" : "iphone", - "minimum-system-version" : "7.0", - "subtype" : "retina4", - "scale" : "2x" + "scale" : "1x" }, { "orientation" : "portrait", "idiom" : "ipad", - "minimum-system-version" : "7.0", "extent" : "full-screen", - "scale" : "1x" + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" } ], "info" : { diff --git a/Example/Info-Mac.plist b/Example/Info-Mac.plist index 64f38ae..fee7e5d 100644 --- a/Example/Info-Mac.plist +++ b/Example/Info-Mac.plist @@ -9,7 +9,7 @@ CFBundleIconFile CFBundleIdentifier - com.armchair.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleLocalizations diff --git a/Example/Info-iOS.plist b/Example/Info-iOS.plist index 013fdf1..f09f229 100644 --- a/Example/Info-iOS.plist +++ b/Example/Info-iOS.plist @@ -11,7 +11,7 @@ CFBundleIcons~ipad CFBundleIdentifier - com.armchair.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleLocalizations diff --git a/Example/ViewController.swift b/Example/ViewController.swift index b1f7e34..fbd0bcb 100644 --- a/Example/ViewController.swift +++ b/Example/ViewController.swift @@ -55,7 +55,7 @@ extension ViewController { // Only set it if we are using Armchair localizations if !Armchair.useMainAppBundleForLocalizations() { - var currentLocalization: NSString = NSBundle.mainBundle().preferredLocalizations[0] as! NSString + let currentLocalization: NSString = NSBundle.mainBundle().preferredLocalizations[0] as NSString // Only set it if we are using a different language than this apps development language if let developmentLocalization = NSBundle.mainBundle().developmentLocalization { if currentLocalization != developmentLocalization { @@ -74,7 +74,7 @@ extension ViewController { #endif } - @IBAction func presentStandardPrompt(AnyObject) { + @IBAction func presentStandardPrompt(_: AnyObject) { resetAppReviewManager() // The AppID is the only required setup @@ -92,7 +92,7 @@ extension ViewController { Armchair.userDidSignificantEvent(true) } - @IBAction func presentCustomizedPrompt(AnyObject) { + @IBAction func presentCustomizedPrompt(_: AnyObject) { resetAppReviewManager() // The AppID is the only required setup @@ -150,23 +150,23 @@ extension ViewController { Armchair.affiliateCampaignCode("Armchair-ExampleApp") // Armchair is block based, so setup some blocks on events - Armchair.onDidDeclineToRate() { println("[Example App] The user just declined to rate") } - Armchair.onDidDisplayAlert() { println("[Example App] We just displayed the rating prompt") } - Armchair.onDidOptToRate() { println("[Example App] The user just opted to rate") } - Armchair.onDidOptToRemindLater({ println("[Example App] The user just opted to remind later") }) + Armchair.onDidDeclineToRate() { print("[Example App] The user just declined to rate") } + Armchair.onDidDisplayAlert() { print("[Example App] We just displayed the rating prompt") } + Armchair.onDidOptToRate() { print("[Example App] The user just opted to rate") } + Armchair.onDidOptToRemindLater({ print("[Example App] The user just opted to remind later") }) #if os(iOS) - Armchair.onWillPresentModalView({ println("[Example App] About to present the modal view. Animated: \($0)") }) - Armchair.onDidDismissModalView({ println("[Example App] Just dismissed the modal view. Animated: \($0)") }) + Armchair.onWillPresentModalView({ print("[Example App] About to present the modal view. Animated: \($0)") }) + Armchair.onDidDismissModalView({ print("[Example App] Just dismissed the modal view. Animated: \($0)") }) #endif // Armchair has sensible defaults for the NSUserDefault keys it uses, but you can customize that here - Armchair.setKey("kSettingsSignificantEventTally", ArmchairKey.SignificantEventCount) + Armchair.setKey("kSettingsSignificantEventTally", armchairKeyType: ArmchairKey.SignificantEventCount) // You can also call it with a block to circumvent any of Armchair should rate logic. Armchair.userDidSignificantEvent({ (trackingInfo: ArmchairTrackingInfo) -> (Bool) in // the trackingInfo.info dictionary has all the keys/value Armchair uses to determine whether or not to show a prompt - println("[Example App] \(trackingInfo)") + print("[Example App] \(trackingInfo)") return true }) @@ -186,7 +186,7 @@ extension ViewController { } #if os(iOS) - @IBAction func presentStoreKitPrompt(AnyObject) { + @IBAction func presentStoreKitPrompt(_: AnyObject) { resetAppReviewManager() // The AppID is the only required setup @@ -212,7 +212,7 @@ extension ViewController { Armchair.resetDefaults() } - @IBAction func openUrbanApps(AnyObject) { + @IBAction func openUrbanApps(_: AnyObject) { if let url = NSURL(string: "http://urbanapps.com") { #if os(iOS) UIApplication.sharedApplication().openURL(url) diff --git a/Mac Example.xcodeproj/project.pbxproj b/Mac Example.xcodeproj/project.pbxproj index 270cc06..db29f24 100644 --- a/Mac Example.xcodeproj/project.pbxproj +++ b/Mac Example.xcodeproj/project.pbxproj @@ -168,7 +168,8 @@ E60FA7B219C908FE00179D70 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0610; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = Armchair; TargetAttributes = { E60FA7B919C908FE00179D70 = { @@ -311,6 +312,7 @@ CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -375,6 +377,7 @@ COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = "Example/Info-Mac.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -386,6 +389,7 @@ COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = "Example/Info-Mac.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; diff --git a/Source/Armchair.swift b/Source/Armchair.swift index 87296a1..74766a3 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -1534,7 +1534,7 @@ public class Manager : ArmchairManager { // MARK: Internet Connectivity private func connectedToNetwork() -> Bool { - var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0)) + var zeroAddress = sockaddr_in() zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) zeroAddress.sin_family = sa_family_t(AF_INET) @@ -1545,7 +1545,7 @@ public class Manager : ArmchairManager { } var flags : SCNetworkReachabilityFlags = [] - if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) { + if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) { return false } diff --git a/Source/Info-Localizable.plist b/Source/Info-Localizable.plist index 5d9c742..82623ca 100644 --- a/Source/Info-Localizable.plist +++ b/Source/Info-Localizable.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.armchair.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Source/Info.plist b/Source/Info.plist index c1a3778..d3de8ee 100644 --- a/Source/Info.plist +++ b/Source/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.armchair.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/Tests/Info.plist b/Tests/Info.plist index d7fd4b1..2c8f723 100644 --- a/Tests/Info.plist +++ b/Tests/Info.plist @@ -4,10 +4,12 @@ CFBundleDevelopmentRegion en + CFBundleDisplayName + Armchair Tests CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - com.armchair.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -20,7 +22,5 @@ ???? CFBundleVersion 1 - CFBundleDisplayName - Armchair Tests diff --git a/iOS Example.xcodeproj/project.pbxproj b/iOS Example.xcodeproj/project.pbxproj index 169a99a..6fffb65 100644 --- a/iOS Example.xcodeproj/project.pbxproj +++ b/iOS Example.xcodeproj/project.pbxproj @@ -195,7 +195,8 @@ F8111DFD19A951050040E7D1 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0600; + LastSwiftUpdateCheck = 0700; + LastUpgradeCheck = 0700; ORGANIZATIONNAME = Armchair; TargetAttributes = { F8111E0419A951050040E7D1 = { @@ -352,6 +353,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -424,6 +426,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_SWIFT_FLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "iOS Example"; PROVISIONING_PROFILE = ""; }; @@ -440,6 +443,7 @@ INFOPLIST_FILE = "$(SRCROOT)/Example/Info-iOS.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = "com.armchair.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "iOS Example"; PROVISIONING_PROFILE = ""; }; From d14a80f7482e6d3d34b5acb4e48c0063164788e2 Mon Sep 17 00:00:00 2001 From: Kurt Ernstsen Date: Mon, 28 Sep 2015 23:30:44 -0500 Subject: [PATCH 2/3] changed println() to print() Xcode7.0.1/Swift2.0 release build complains about the println() lines. --- Source/Armchair.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Source/Armchair.swift b/Source/Armchair.swift index 74766a3..da80176 100644 --- a/Source/Armchair.swift +++ b/Source/Armchair.swift @@ -295,10 +295,10 @@ public func debugEnabled(debugEnabled: Bool) { #if Debug Manager.defaultManager.debugEnabled = debugEnabled #else - println("[Armchair] Debug is disabled on release builds.") - println("[Armchair] If you really want to enable debug mode,") - println("[Armchair] add \"-DDebug\" to your Swift Compiler - Custom Flags") - println("[Armchair] section in the target's build settings for release") + print("[Armchair] Debug is disabled on release builds.") + print("[Armchair] If you really want to enable debug mode,") + print("[Armchair] add \"-DDebug\" to your Swift Compiler - Custom Flags") + print("[Armchair] section in the target's build settings for release") #endif } From 413996175ec32c7fb48a41390395cbab9e9fc960 Mon Sep 17 00:00:00 2001 From: Ben Guo Date: Mon, 2 Nov 2015 14:53:09 -0500 Subject: [PATCH 3/3] share schemes for Carthage support --- .../xcshareddata/xcschemes/Armchair.xcscheme | 99 +++++++++++++++++++ .../xcschemes/ArmchairMac.xcscheme | 80 +++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 Armchair.xcodeproj/xcshareddata/xcschemes/Armchair.xcscheme create mode 100644 Armchair.xcodeproj/xcshareddata/xcschemes/ArmchairMac.xcscheme diff --git a/Armchair.xcodeproj/xcshareddata/xcschemes/Armchair.xcscheme b/Armchair.xcodeproj/xcshareddata/xcschemes/Armchair.xcscheme new file mode 100644 index 0000000..74ef91f --- /dev/null +++ b/Armchair.xcodeproj/xcshareddata/xcschemes/Armchair.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Armchair.xcodeproj/xcshareddata/xcschemes/ArmchairMac.xcscheme b/Armchair.xcodeproj/xcshareddata/xcschemes/ArmchairMac.xcscheme new file mode 100644 index 0000000..e10c193 --- /dev/null +++ b/Armchair.xcodeproj/xcshareddata/xcschemes/ArmchairMac.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +