mirror of
https://github.com/UrbanApps/Armchair.git
synced 2026-07-03 03:21:35 +02:00
Merge pull request #20 from gershwin88/master
Fixing errors and warning when using Swift 2
This commit is contained in:
+50
-55
@@ -602,7 +602,7 @@ public class StandardUserDefaults: ArmchairDefaultsObject {
|
|||||||
@objc public func synchronize() -> Bool { return defaults.synchronize() }
|
@objc public func synchronize() -> Bool { return defaults.synchronize() }
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum ArmchairKey: String, Printable {
|
public enum ArmchairKey: String, CustomStringConvertible {
|
||||||
case FirstUseDate = "First Use Date"
|
case FirstUseDate = "First Use Date"
|
||||||
case UseCount = "Use Count"
|
case UseCount = "Use Count"
|
||||||
case SignificantEventCount = "Significant Event Count"
|
case SignificantEventCount = "Significant Event Count"
|
||||||
@@ -626,7 +626,7 @@ public enum ArmchairKey: String, Printable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ArmchairTrackingInfo: Printable {
|
public class ArmchairTrackingInfo: CustomStringConvertible {
|
||||||
public let info: Dictionary<ArmchairKey, AnyObject>
|
public let info: Dictionary<ArmchairKey, AnyObject>
|
||||||
|
|
||||||
init(info: Dictionary<ArmchairKey, AnyObject>) {
|
init(info: Dictionary<ArmchairKey, AnyObject>) {
|
||||||
@@ -704,7 +704,7 @@ public class Manager : ArmchairManager {
|
|||||||
template = bundle.localizedStringForKey(template, value:"", table: "ArmchairLocalizable")
|
template = bundle.localizedStringForKey(template, value:"", table: "ArmchairLocalizable")
|
||||||
}
|
}
|
||||||
|
|
||||||
return template.stringByReplacingOccurrencesOfString("%@", withString: "\(self.appName)", options: nil, range: nil)
|
return template.stringByReplacingOccurrencesOfString("%@", withString: "\(self.appName)", options: NSStringCompareOptions(rawValue: 0), range: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
private lazy var reviewMessage: String = self.defaultReviewMessage()
|
private lazy var reviewMessage: String = self.defaultReviewMessage()
|
||||||
@@ -715,7 +715,7 @@ public class Manager : ArmchairManager {
|
|||||||
template = bundle.localizedStringForKey(template, value:"", table: "ArmchairLocalizable")
|
template = bundle.localizedStringForKey(template, value:"", table: "ArmchairLocalizable")
|
||||||
}
|
}
|
||||||
|
|
||||||
return template.stringByReplacingOccurrencesOfString("%@", withString: "\(self.appName)", options: nil, range: nil)
|
return template.stringByReplacingOccurrencesOfString("%@", withString: "\(self.appName)", options: NSStringCompareOptions(rawValue: 0), range: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
private lazy var cancelButtonTitle: String = self.defaultCancelButtonTitle()
|
private lazy var cancelButtonTitle: String = self.defaultCancelButtonTitle()
|
||||||
@@ -737,7 +737,7 @@ public class Manager : ArmchairManager {
|
|||||||
template = bundle.localizedStringForKey(template, value:"", table: "ArmchairLocalizable")
|
template = bundle.localizedStringForKey(template, value:"", table: "ArmchairLocalizable")
|
||||||
}
|
}
|
||||||
|
|
||||||
return template.stringByReplacingOccurrencesOfString("%@", withString: "\(self.appName)", options: nil, range: nil)
|
return template.stringByReplacingOccurrencesOfString("%@", withString: "\(self.appName)", options: NSStringCompareOptions(rawValue: 0), range: nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
private lazy var remindButtonTitle: String? = self.defaultRemindButtonTitle()
|
private lazy var remindButtonTitle: String? = self.defaultRemindButtonTitle()
|
||||||
@@ -916,7 +916,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func _incrementCountForKeyType(incrementKeyType: ArmchairKey) {
|
private func _incrementCountForKeyType(incrementKeyType: ArmchairKey) {
|
||||||
var incrementKey = keyForArmchairKeyType(incrementKeyType)
|
let incrementKey = keyForArmchairKeyType(incrementKeyType)
|
||||||
|
|
||||||
let bundleVersionKey = kCFBundleVersionKey as String
|
let bundleVersionKey = kCFBundleVersionKey as String
|
||||||
// App's version. Not settable as the other ivars because that would be crazy.
|
// App's version. Not settable as the other ivars because that would be crazy.
|
||||||
@@ -927,11 +927,10 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get the version number that we've been tracking thus far
|
// Get the version number that we've been tracking thus far
|
||||||
var currentVersionKey = keyForArmchairKeyType(ArmchairKey.CurrentVersion)
|
let currentVersionKey = keyForArmchairKeyType(ArmchairKey.CurrentVersion)
|
||||||
var trackingVersion: String? = userDefaultsObject?.stringForKey(currentVersionKey)
|
var trackingVersion: String? = userDefaultsObject?.stringForKey(currentVersionKey)
|
||||||
// New install, or changed keys
|
// New install, or changed keys
|
||||||
if let version = trackingVersion {
|
if trackingVersion == nil {
|
||||||
} else {
|
|
||||||
trackingVersion = currentVersion
|
trackingVersion = currentVersion
|
||||||
userDefaultsObject?.setObject(currentVersion, forKey: currentVersionKey)
|
userDefaultsObject?.setObject(currentVersion, forKey: currentVersionKey)
|
||||||
}
|
}
|
||||||
@@ -940,7 +939,7 @@ public class Manager : ArmchairManager {
|
|||||||
|
|
||||||
if trackingVersion == currentVersion {
|
if trackingVersion == currentVersion {
|
||||||
// Check if the first use date has been set. if not, set it.
|
// Check if the first use date has been set. if not, set it.
|
||||||
var firstUseDateKey = keyForArmchairKeyType(ArmchairKey.FirstUseDate)
|
let firstUseDateKey = keyForArmchairKeyType(ArmchairKey.FirstUseDate)
|
||||||
var timeInterval: Double? = userDefaultsObject?.doubleForKey(firstUseDateKey)
|
var timeInterval: Double? = userDefaultsObject?.doubleForKey(firstUseDateKey)
|
||||||
if 0 == timeInterval {
|
if 0 == timeInterval {
|
||||||
timeInterval = NSDate().timeIntervalSince1970
|
timeInterval = NSDate().timeIntervalSince1970
|
||||||
@@ -1030,11 +1029,11 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if the app has been used long enough
|
// check if the app has been used long enough
|
||||||
var timeIntervalOfFirstLaunch = userDefaultsObject?.doubleForKey(keyForArmchairKeyType(ArmchairKey.FirstUseDate))
|
let timeIntervalOfFirstLaunch = userDefaultsObject?.doubleForKey(keyForArmchairKeyType(ArmchairKey.FirstUseDate))
|
||||||
if let timeInterval = timeIntervalOfFirstLaunch {
|
if let timeInterval = timeIntervalOfFirstLaunch {
|
||||||
var dateOfFirstLaunch = NSDate(timeIntervalSince1970: timeInterval)
|
let dateOfFirstLaunch = NSDate(timeIntervalSince1970: timeInterval)
|
||||||
var timeSinceFirstLaunch = NSDate().timeIntervalSinceDate(dateOfFirstLaunch)
|
let timeSinceFirstLaunch = NSDate().timeIntervalSinceDate(dateOfFirstLaunch)
|
||||||
var timeUntilRate: NSTimeInterval = 60 * 60 * 24 * Double(daysUntilPrompt)
|
let timeUntilRate: NSTimeInterval = 60 * 60 * 24 * Double(daysUntilPrompt)
|
||||||
if timeSinceFirstLaunch < timeUntilRate {
|
if timeSinceFirstLaunch < timeUntilRate {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -1043,7 +1042,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if the app has been used enough times
|
// check if the app has been used enough times
|
||||||
var useCount = userDefaultsObject?.integerForKey(keyForArmchairKeyType(ArmchairKey.UseCount))
|
let useCount = userDefaultsObject?.integerForKey(keyForArmchairKeyType(ArmchairKey.UseCount))
|
||||||
if let count = useCount {
|
if let count = useCount {
|
||||||
if UInt(count) <= usesUntilPrompt {
|
if UInt(count) <= usesUntilPrompt {
|
||||||
return false
|
return false
|
||||||
@@ -1053,7 +1052,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if the user has done enough significant events
|
// check if the user has done enough significant events
|
||||||
var significantEventCount = userDefaultsObject?.integerForKey(keyForArmchairKeyType(ArmchairKey.SignificantEventCount))
|
let significantEventCount = userDefaultsObject?.integerForKey(keyForArmchairKeyType(ArmchairKey.SignificantEventCount))
|
||||||
if let count = significantEventCount {
|
if let count = significantEventCount {
|
||||||
if UInt(count) < significantEventsUntilPrompt {
|
if UInt(count) < significantEventsUntilPrompt {
|
||||||
return false
|
return false
|
||||||
@@ -1073,11 +1072,11 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the user wanted to be reminded later, has enough time passed?
|
// If the user wanted to be reminded later, has enough time passed?
|
||||||
var timeIntervalOfReminder = userDefaultsObject?.doubleForKey(keyForArmchairKeyType(ArmchairKey.ReminderRequestDate))
|
let timeIntervalOfReminder = userDefaultsObject?.doubleForKey(keyForArmchairKeyType(ArmchairKey.ReminderRequestDate))
|
||||||
if let timeInterval = timeIntervalOfReminder {
|
if let timeInterval = timeIntervalOfReminder {
|
||||||
var reminderRequestDate = NSDate(timeIntervalSince1970: timeInterval)
|
let reminderRequestDate = NSDate(timeIntervalSince1970: timeInterval)
|
||||||
var timeSinceReminderRequest = NSDate().timeIntervalSinceDate(reminderRequestDate)
|
let timeSinceReminderRequest = NSDate().timeIntervalSinceDate(reminderRequestDate)
|
||||||
var timeUntilReminder: NSTimeInterval = 60 * 60 * 24 * Double(daysBeforeReminding)
|
let timeUntilReminder: NSTimeInterval = 60 * 60 * 24 * Double(daysBeforeReminding)
|
||||||
if timeSinceReminderRequest < timeUntilReminder {
|
if timeSinceReminderRequest < timeUntilReminder {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@@ -1086,7 +1085,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if we have a global set to not show if the end-user has already rated once, and the developer has not opted out of displaying on minor updates
|
// if we have a global set to not show if the end-user has already rated once, and the developer has not opted out of displaying on minor updates
|
||||||
var ratedAnyVersion = userDefaultsObject?.boolForKey(keyForArmchairKeyType(ArmchairKey.RatedAnyVersion))
|
let ratedAnyVersion = userDefaultsObject?.boolForKey(keyForArmchairKeyType(ArmchairKey.RatedAnyVersion))
|
||||||
if let ratedAlready = ratedAnyVersion {
|
if let ratedAlready = ratedAnyVersion {
|
||||||
if (!shouldPromptIfRated && ratedAlready) {
|
if (!shouldPromptIfRated && ratedAlready) {
|
||||||
return false
|
return false
|
||||||
@@ -1113,18 +1112,14 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func showsRemindButton() -> Bool {
|
private func showsRemindButton() -> Bool {
|
||||||
if let title = remindButtonTitle {
|
return (remindButtonTitle != nil)
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func showRatingAlert() {
|
private func showRatingAlert() {
|
||||||
#if os(iOS)
|
#if os(iOS)
|
||||||
if operatingSystemVersion >= 8 && usesAlertController {
|
if operatingSystemVersion >= 8 && usesAlertController {
|
||||||
/* iOS 8 uses new UIAlertController API*/
|
/* iOS 8 uses new UIAlertController API*/
|
||||||
var alertView : UIAlertController = UIAlertController(title: reviewTitle, message: reviewMessage, preferredStyle: UIAlertControllerStyle.Alert)
|
let alertView : UIAlertController = UIAlertController(title: reviewTitle, message: reviewMessage, preferredStyle: UIAlertControllerStyle.Alert)
|
||||||
alertView.addAction(UIAlertAction(title: cancelButtonTitle, style:UIAlertActionStyle.Cancel, handler: {
|
alertView.addAction(UIAlertAction(title: cancelButtonTitle, style:UIAlertActionStyle.Cancel, handler: {
|
||||||
(alert: UIAlertAction!) in
|
(alert: UIAlertAction!) in
|
||||||
self.dontRate()
|
self.dontRate()
|
||||||
@@ -1144,7 +1139,7 @@ public class Manager : ArmchairManager {
|
|||||||
if let presentingController = UIApplication.sharedApplication().keyWindow?.rootViewController {
|
if let presentingController = UIApplication.sharedApplication().keyWindow?.rootViewController {
|
||||||
if let topController = topMostViewController(presentingController) {
|
if let topController = topMostViewController(presentingController) {
|
||||||
topController.presentViewController(alertView, animated: usesAnimation) {
|
topController.presentViewController(alertView, animated: usesAnimation) {
|
||||||
println("presentViewController() completed")
|
print("presentViewController() completed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1171,7 +1166,7 @@ public class Manager : ArmchairManager {
|
|||||||
|
|
||||||
#elseif os(OSX)
|
#elseif os(OSX)
|
||||||
|
|
||||||
var alert: NSAlert = NSAlert()
|
let alert: NSAlert = NSAlert()
|
||||||
alert.messageText = reviewTitle
|
alert.messageText = reviewTitle
|
||||||
alert.informativeText = reviewMessage
|
alert.informativeText = reviewMessage
|
||||||
alert.addButtonWithTitle(rateButtonTitle)
|
alert.addButtonWithTitle(rateButtonTitle)
|
||||||
@@ -1187,7 +1182,7 @@ public class Manager : ArmchairManager {
|
|||||||
self.handleNSAlertReturnCode(response)
|
self.handleNSAlertReturnCode(response)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
var returnCode = alert.runModal()
|
let returnCode = alert.runModal()
|
||||||
handleNSAlertReturnCode(returnCode)
|
handleNSAlertReturnCode(returnCode)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1302,7 +1297,7 @@ public class Manager : ArmchairManager {
|
|||||||
|
|
||||||
let storeViewController = SKStoreProductViewController()
|
let storeViewController = SKStoreProductViewController()
|
||||||
|
|
||||||
var productParameters: [NSObject:AnyObject]! = [SKStoreProductParameterITunesItemIdentifier : appID]
|
var productParameters: [String:AnyObject]! = [SKStoreProductParameterITunesItemIdentifier : appID]
|
||||||
|
|
||||||
if (operatingSystemVersion >= 8) {
|
if (operatingSystemVersion >= 8) {
|
||||||
productParameters[SKStoreProductParameterAffiliateToken] = affiliateCode
|
productParameters[SKStoreProductParameterAffiliateToken] = affiliateCode
|
||||||
@@ -1343,7 +1338,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
#elseif os(OSX)
|
#elseif os(OSX)
|
||||||
if let url = NSURL(string: reviewURLString()) {
|
if let url = NSURL(string: reviewURLString()) {
|
||||||
var opened = NSWorkspace.sharedWorkspace().openURL(url)
|
let opened = NSWorkspace.sharedWorkspace().openURL(url)
|
||||||
if !opened {
|
if !opened {
|
||||||
debugLog("Failed to open \(url)")
|
debugLog("Failed to open \(url)")
|
||||||
}
|
}
|
||||||
@@ -1353,7 +1348,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func reviewURLString() -> String {
|
private func reviewURLString() -> String {
|
||||||
var template = reviewURLTemplate
|
let template = reviewURLTemplate
|
||||||
var reviewURL = template.stringByReplacingOccurrencesOfString("APP_ID", withString: "\(appID)")
|
var reviewURL = template.stringByReplacingOccurrencesOfString("APP_ID", withString: "\(appID)")
|
||||||
reviewURL = reviewURL.stringByReplacingOccurrencesOfString("AFFILIATE_CODE", withString: "\(affiliateCode)")
|
reviewURL = reviewURL.stringByReplacingOccurrencesOfString("AFFILIATE_CODE", withString: "\(affiliateCode)")
|
||||||
reviewURL = reviewURL.stringByReplacingOccurrencesOfString("AFFILIATE_CAMPAIGN_CODE", withString: "\(affiliateCampaignCode)")
|
reviewURL = reviewURL.stringByReplacingOccurrencesOfString("AFFILIATE_CAMPAIGN_CODE", withString: "\(affiliateCampaignCode)")
|
||||||
@@ -1367,7 +1362,7 @@ public class Manager : ArmchairManager {
|
|||||||
var trackingInfo: Dictionary<ArmchairKey, AnyObject> = [:]
|
var trackingInfo: Dictionary<ArmchairKey, AnyObject> = [:]
|
||||||
|
|
||||||
for keyType in ArmchairKey.allValues {
|
for keyType in ArmchairKey.allValues {
|
||||||
var obj: AnyObject? = userDefaultsObject?.objectForKey(keyForArmchairKeyType(keyType))
|
let obj: AnyObject? = userDefaultsObject?.objectForKey(keyForArmchairKeyType(keyType))
|
||||||
if let val = obj as? NSObject {
|
if let val = obj as? NSObject {
|
||||||
trackingInfo[keyType] = val
|
trackingInfo[keyType] = val
|
||||||
} else {
|
} else {
|
||||||
@@ -1466,7 +1461,7 @@ public class Manager : ArmchairManager {
|
|||||||
private func migrateAppiraterKeysIfNecessary() {
|
private func migrateAppiraterKeysIfNecessary() {
|
||||||
|
|
||||||
let appiraterAlreadyCompletedKey: NSString = keyForArmchairKeyType(.AppiraterMigrationCompleted)
|
let appiraterAlreadyCompletedKey: NSString = keyForArmchairKeyType(.AppiraterMigrationCompleted)
|
||||||
var appiraterMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appiraterAlreadyCompletedKey as String)
|
let appiraterMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appiraterAlreadyCompletedKey as String)
|
||||||
|
|
||||||
if let completed = appiraterMigrationAlreadyCompleted {
|
if let completed = appiraterMigrationAlreadyCompleted {
|
||||||
if completed {
|
if completed {
|
||||||
@@ -1474,7 +1469,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var oldKeys: [String] = [AppiraterKey.FirstUseDate,
|
let oldKeys: [String] = [AppiraterKey.FirstUseDate,
|
||||||
AppiraterKey.UseCount,
|
AppiraterKey.UseCount,
|
||||||
AppiraterKey.SignificantEventCount,
|
AppiraterKey.SignificantEventCount,
|
||||||
AppiraterKey.CurrentVersion,
|
AppiraterKey.CurrentVersion,
|
||||||
@@ -1483,7 +1478,7 @@ public class Manager : ArmchairManager {
|
|||||||
AppiraterKey.DeclinedToRate,
|
AppiraterKey.DeclinedToRate,
|
||||||
AppiraterKey.ReminderRequestDate]
|
AppiraterKey.ReminderRequestDate]
|
||||||
for oldKey in oldKeys {
|
for oldKey in oldKeys {
|
||||||
var oldValue: NSObject? = userDefaultsObject?.objectForKey(oldKey) as? NSObject
|
let oldValue: NSObject? = userDefaultsObject?.objectForKey(oldKey) as? NSObject
|
||||||
if let val = oldValue {
|
if let val = oldValue {
|
||||||
let newKey = armchairKeyForAppiraterKey(oldKey)
|
let newKey = armchairKeyForAppiraterKey(oldKey)
|
||||||
userDefaultsObject?.setObject(val, forKey: newKey)
|
userDefaultsObject?.setObject(val, forKey: newKey)
|
||||||
@@ -1498,7 +1493,7 @@ public class Manager : ArmchairManager {
|
|||||||
// This only supports the default UAAppReviewManager keys. If you customized them, you will have to manually migrate your values over.
|
// This only supports the default UAAppReviewManager keys. If you customized them, you will have to manually migrate your values over.
|
||||||
private func migrateUAAppReviewManagerKeysIfNecessary() {
|
private func migrateUAAppReviewManagerKeysIfNecessary() {
|
||||||
let appReviewManagerAlreadyCompletedKey: NSString = keyForArmchairKeyType(.UAAppReviewManagerMigrationCompleted)
|
let appReviewManagerAlreadyCompletedKey: NSString = keyForArmchairKeyType(.UAAppReviewManagerMigrationCompleted)
|
||||||
var appReviewManagerMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appReviewManagerAlreadyCompletedKey as String)
|
let appReviewManagerMigrationAlreadyCompleted = userDefaultsObject?.boolForKey(appReviewManagerAlreadyCompletedKey as String)
|
||||||
|
|
||||||
if let completed = appReviewManagerMigrationAlreadyCompleted {
|
if let completed = appReviewManagerMigrationAlreadyCompleted {
|
||||||
if completed {
|
if completed {
|
||||||
@@ -1507,7 +1502,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// By default, UAAppReviewManager keys are in the format <appID>_UAAppReviewManagerKey<keyType>
|
// By default, UAAppReviewManager keys are in the format <appID>_UAAppReviewManagerKey<keyType>
|
||||||
var oldKeys: [String:ArmchairKey] = ["\(appID)_UAAppReviewManagerKeyFirstUseDate" : ArmchairKey.FirstUseDate,
|
let oldKeys: [String:ArmchairKey] = ["\(appID)_UAAppReviewManagerKeyFirstUseDate" : ArmchairKey.FirstUseDate,
|
||||||
"\(appID)_UAAppReviewManagerKeyUseCount" : ArmchairKey.UseCount,
|
"\(appID)_UAAppReviewManagerKeyUseCount" : ArmchairKey.UseCount,
|
||||||
"\(appID)_UAAppReviewManagerKeySignificantEventCount" : ArmchairKey.SignificantEventCount,
|
"\(appID)_UAAppReviewManagerKeySignificantEventCount" : ArmchairKey.SignificantEventCount,
|
||||||
"\(appID)_UAAppReviewManagerKeyCurrentVersion" : ArmchairKey.CurrentVersion,
|
"\(appID)_UAAppReviewManagerKeyCurrentVersion" : ArmchairKey.CurrentVersion,
|
||||||
@@ -1519,7 +1514,7 @@ public class Manager : ArmchairManager {
|
|||||||
"\(appID)_UAAppReviewManagerKeyPreviousVersionDeclinedToRate" : ArmchairKey.PreviousVersionDeclinedToRate,
|
"\(appID)_UAAppReviewManagerKeyPreviousVersionDeclinedToRate" : ArmchairKey.PreviousVersionDeclinedToRate,
|
||||||
"\(appID)_UAAppReviewManagerKeyRatedAnyVersion" : ArmchairKey.RatedAnyVersion]
|
"\(appID)_UAAppReviewManagerKeyRatedAnyVersion" : ArmchairKey.RatedAnyVersion]
|
||||||
for (oldKey, newKeyType) in oldKeys {
|
for (oldKey, newKeyType) in oldKeys {
|
||||||
var oldValue: NSObject? = userDefaultsObject?.objectForKey(oldKey) as? NSObject
|
let oldValue: NSObject? = userDefaultsObject?.objectForKey(oldKey) as? NSObject
|
||||||
if let val = oldValue {
|
if let val = oldValue {
|
||||||
userDefaultsObject?.setObject(val, forKey: keyForArmchairKeyType(newKeyType))
|
userDefaultsObject?.setObject(val, forKey: keyForArmchairKeyType(newKeyType))
|
||||||
userDefaultsObject?.removeObjectForKey(oldKey)
|
userDefaultsObject?.removeObjectForKey(oldKey)
|
||||||
@@ -1543,17 +1538,19 @@ public class Manager : ArmchairManager {
|
|||||||
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
|
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
|
||||||
zeroAddress.sin_family = sa_family_t(AF_INET)
|
zeroAddress.sin_family = sa_family_t(AF_INET)
|
||||||
|
|
||||||
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
|
guard let defaultRouteReachability = withUnsafePointer(&zeroAddress, {
|
||||||
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0)).takeRetainedValue()
|
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
|
||||||
}
|
}) else {
|
||||||
|
|
||||||
var flags : SCNetworkReachabilityFlags = 0
|
|
||||||
if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) == 0 {
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
let isReachable = (flags & UInt32(kSCNetworkFlagsReachable)) != 0
|
var flags : SCNetworkReachabilityFlags = []
|
||||||
let needsConnection = (flags & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
|
if SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
let isReachable = flags.contains(.Reachable)
|
||||||
|
let needsConnection = flags.contains(.ConnectionRequired)
|
||||||
return (isReachable && !needsConnection)
|
return (isReachable && !needsConnection)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1581,11 +1578,10 @@ public class Manager : ArmchairManager {
|
|||||||
private func topMostViewController(controller: UIViewController?) -> UIViewController? {
|
private func topMostViewController(controller: UIViewController?) -> UIViewController? {
|
||||||
var isPresenting: Bool = false
|
var isPresenting: Bool = false
|
||||||
var topController: UIViewController? = controller
|
var topController: UIViewController? = controller
|
||||||
do {
|
repeat {
|
||||||
// this path is called only on iOS 6+, so -presentedViewController is fine here.
|
// this path is called only on iOS 6+, so -presentedViewController is fine here.
|
||||||
if let controller = topController {
|
if let controller = topController {
|
||||||
var presented: UIViewController? = controller.presentedViewController
|
if let presented = controller.presentedViewController {
|
||||||
if let presentedController = presented {
|
|
||||||
isPresenting = true
|
isPresenting = true
|
||||||
topController = presented
|
topController = presented
|
||||||
} else {
|
} else {
|
||||||
@@ -1601,7 +1597,7 @@ public class Manager : ArmchairManager {
|
|||||||
if var window = UIApplication.sharedApplication().keyWindow {
|
if var window = UIApplication.sharedApplication().keyWindow {
|
||||||
|
|
||||||
if window.windowLevel != UIWindowLevelNormal {
|
if window.windowLevel != UIWindowLevelNormal {
|
||||||
var windows: NSArray = UIApplication.sharedApplication().windows
|
let windows: NSArray = UIApplication.sharedApplication().windows
|
||||||
for candidateWindow in windows {
|
for candidateWindow in windows {
|
||||||
if let candidateWindow = candidateWindow as? UIWindow {
|
if let candidateWindow = candidateWindow as? UIWindow {
|
||||||
if candidateWindow.windowLevel == UIWindowLevelNormal {
|
if candidateWindow.windowLevel == UIWindowLevelNormal {
|
||||||
@@ -1613,8 +1609,7 @@ public class Manager : ArmchairManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for subView in window.subviews {
|
for subView in window.subviews {
|
||||||
var nextResponder: UIResponder? = subView.nextResponder()
|
if let responder = subView.nextResponder() {
|
||||||
if let responder = nextResponder {
|
|
||||||
if responder.isKindOfClass(UIViewController) {
|
if responder.isKindOfClass(UIViewController) {
|
||||||
return topMostViewController(responder as? UIViewController)
|
return topMostViewController(responder as? UIViewController)
|
||||||
}
|
}
|
||||||
@@ -1723,7 +1718,7 @@ public class Manager : ArmchairManager {
|
|||||||
private func debugLog(log: String) {
|
private func debugLog(log: String) {
|
||||||
if debugEnabled {
|
if debugEnabled {
|
||||||
dispatch_sync(lockQueue, {
|
dispatch_sync(lockQueue, {
|
||||||
println("[Armchair] \(log)")
|
print("[Armchair] \(log)")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user