Skip to content

Instantly share code, notes, and snippets.

@arjun011
Created June 26, 2019 06:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arjun011/de17ec9f1b9b085243868f8921e6e572 to your computer and use it in GitHub Desktop.
Save arjun011/de17ec9f1b9b085243868f8921e6e572 to your computer and use it in GitHub Desktop.
Force Update iOS App while API has major update
final class ForceToUpdateApp {
static func isForceToUpdateRequired(versionNumber:Int) -> Bool {
if (UserDefaults.standard.object(forKey: "appVersion") as? String) == nil {
UserDefaults.standard.set(Bundle.main.releaseVersionNumber, forKey: "appVersion")
}
if (UserDefaults.standard.object(forKey: "apiVersion") as? Int) == nil {
UserDefaults.standard.set(versionNumber, forKey: "apiVersion")
}
guard let installedAppNumber = UserDefaults.standard.object(forKey: "apiVersion") as? Int else {
return false
}
if versionNumber > installedAppNumber {
return checkInstalledAppVersion(versionNumber)
}else {
return false
}
}
static func checkInstalledAppVersion(_ apiVersionNumber:Int) -> Bool {
guard let instaledAppVersion = UserDefaults.standard.object(forKey: "appVersion") as? String else {
return false
}
if instaledAppVersion == Bundle.main.releaseVersionNumber! {
return true
}else {
UserDefaults.standard.set(Bundle.main.releaseVersionNumber, forKey: "appVersion")
UserDefaults.standard.set(apiVersionNumber, forKey: "apiVersion")
return false
}
}
}
extension Bundle {
var releaseVersionNumber: String? {
return infoDictionary?["CFBundleShortVersionString"] as? String
}
var buildVersionNumber: String? {
return infoDictionary?["CFBundleVersion"] as? String
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment