Created
February 12, 2016 17:51
-
-
Save mingsai/fdd44a7beaaadb18a29a to your computer and use it in GitHub Desktop.
A sample class to show how I manage an apps user settings
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // | |
| // MNGAppUserSettings.swift | |
| // | |
| // | |
| // Created by Tommie N. Carter, Jr., MBA on 12/7/15. | |
| // Copyright © 2015 MING Technology. All rights reserved. | |
| // | |
| import UIKit | |
| enum MNGSettingsKeys :String { | |
| case ShowVideoFrontFacingCamera, ShareVideosAnonomously, AutoStartVideoStory, SaveVideosToLibrary, ShowPhotoFrontFacingCamera,SharePhotosAnonomously, AutoStartPhotoStory,SavePhotosToLibrary,ShowChaptersFrontFacingCamera, ShareChaptersAnonomously, AutoStartChapterStory, SaveChaptersThumbsToLibrary,ShowAudioFrontFacingCamera, ShareAudiosAnonomously, AutoStartAudioStory,SaveAudioThumbsToLibrary,MaximumVideoRecordingTime,UserRegisteredSuccessfully,PhoneVerified,EmailVerified,CloudUserId,AppUserId,UserRegistrationRecordId,VideoStoryAssetPath | |
| static let allValues = [ShowVideoFrontFacingCamera, ShareVideosAnonomously, AutoStartVideoStory, SaveVideosToLibrary, ShowPhotoFrontFacingCamera,SharePhotosAnonomously, AutoStartPhotoStory,SavePhotosToLibrary,ShowChaptersFrontFacingCamera, ShareChaptersAnonomously, SaveChaptersThumbsToLibrary,ShowAudioFrontFacingCamera, ShareAudiosAnonomously, AutoStartAudioStory,SaveAudioThumbsToLibrary,MaximumVideoRecordingTime,UserRegisteredSuccessfully,PhoneVerified,EmailVerified,CloudUserId,AppUserId,UserRegistrationRecordId,VideoStoryAssetPath] | |
| } | |
| //MNG App User Settings Manager | |
| class MNGAUSManager: NSObject { | |
| static func defaultManager () -> MNGAUSManager { | |
| return sharedInstance | |
| } | |
| static let sharedInstance = MNGAUSManager() | |
| private let defaults = NSUserDefaults.standardUserDefaults() | |
| deinit { | |
| } | |
| //MARK: Class Properties | |
| //MARK: 1 - Front Facing Camera | |
| func audioFrontFacingCamera() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowAudioFrontFacingCamera.rawValue) ?? false | |
| } | |
| func chaptersFrontFacingCamera() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowChaptersFrontFacingCamera.rawValue) ?? false | |
| } | |
| func photoFrontFacingCamera() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowPhotoFrontFacingCamera.rawValue) ?? false | |
| } | |
| func videoFrontFacingCamera() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShowVideoFrontFacingCamera.rawValue) ?? false | |
| } | |
| //MARK: 2 - Share Anonomously | |
| func audioShareAnonomously() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShareAudiosAnonomously.rawValue) ?? false | |
| } | |
| func chaptersShareAnonomously() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShareChaptersAnonomously.rawValue) ?? false | |
| } | |
| func photoShareAnonomously() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SharePhotosAnonomously.rawValue) ?? false | |
| } | |
| func videoShareAnonomously() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.ShareVideosAnonomously.rawValue) ?? false | |
| } | |
| //MARK: 3 - AutoStartStory | |
| func audioAutoStartStory() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartAudioStory.rawValue) ?? false | |
| } | |
| func chaptersAutoStartStory() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartChapterStory.rawValue) ?? false | |
| } | |
| func photoAutoStartStory() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartPhotoStory.rawValue) ?? false | |
| } | |
| func videoAutoStartStory() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.AutoStartVideoStory.rawValue) ?? false | |
| } | |
| //MARK: 4 - SaveToLibrary | |
| func audioThumbSaveToLibrary() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SaveAudioThumbsToLibrary.rawValue) ?? false | |
| } | |
| func chapterThumbSaveToLibrary() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SaveChaptersThumbsToLibrary.rawValue) ?? false | |
| } | |
| func photoSaveToLibrary() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SavePhotosToLibrary.rawValue) ?? false | |
| } | |
| func videoSaveToLibrary() ->Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.SaveVideosToLibrary.rawValue) ?? false | |
| } | |
| //MARK: 5 - Video Time Limits | |
| func maximumVideoTimeLimit () -> NSTimeInterval { | |
| return NSUserDefaults.standardUserDefaults().doubleForKey(MNGSettingsKeys.MaximumVideoRecordingTime.rawValue) ?? 6000.0 | |
| } | |
| //MARK: Setter Methods | |
| //MARK: 1 - Front Facing Camera | |
| func newAudiosFrontFacingCamera(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowAudioFrontFacingCamera.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newChaptersFrontFacingCamera(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowChaptersFrontFacingCamera.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newPhotoFrontFacingCamera(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowPhotoFrontFacingCamera.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newVideoFrontFacingCamera(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShowVideoFrontFacingCamera.rawValue) | |
| defaults.synchronize() | |
| } | |
| //MARK: 2 - Share Anonomously | |
| func newAudiosShareAnonmously(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShareAudiosAnonomously.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newPhotoShareAnonmously(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SharePhotosAnonomously.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newChaptersShareAnonmously(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShareChaptersAnonomously.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newVideoShareAnonmously(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.ShareVideosAnonomously.rawValue) | |
| defaults.synchronize() | |
| } | |
| //MARK: 3 - AutoStartStory | |
| func newAudiosAutoStartStory(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartAudioStory.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newChaptersAutoStartStory(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartChapterStory.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newPhotoAutoStartStory(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartPhotoStory.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newVideoAutoStartStory(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.AutoStartVideoStory.rawValue) | |
| defaults.synchronize() | |
| } | |
| //MARK: 4 - SaveToLibrary | |
| func newAudioThumbSaveToLibrary(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SaveAudioThumbsToLibrary.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newChapterThumbSaveToLibrary(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SaveChaptersThumbsToLibrary.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newPhotoSaveToLibrary(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SavePhotosToLibrary.rawValue) | |
| defaults.synchronize() | |
| } | |
| func newVideoSaveToLibrary(newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.SaveVideosToLibrary.rawValue) | |
| defaults.synchronize() | |
| } | |
| //MARK: 5 - Video Timelimit | |
| func newVideoTimeLimit (newDoubleValue: NSTimeInterval) { | |
| defaults.setDouble(newDoubleValue, forKey: MNGSettingsKeys.MaximumVideoRecordingTime.rawValue) | |
| defaults.synchronize() | |
| } | |
| //MARK: Register User | |
| func newUserRegistration (newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.UserRegisteredSuccessfully.rawValue) | |
| defaults.synchronize() | |
| } | |
| func isUserRegistered () -> Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.UserRegisteredSuccessfully.rawValue) ?? false | |
| } | |
| //MARK: Device Verified | |
| func newPhoneVerified (newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.PhoneVerified.rawValue) | |
| defaults.synchronize() | |
| } | |
| func isPhoneVerified () -> Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.PhoneVerified.rawValue) ?? false | |
| } | |
| func newEmailVerified (newBoolValue:Bool) { | |
| defaults.setBool(newBoolValue, forKey: MNGSettingsKeys.EmailVerified.rawValue) | |
| defaults.synchronize() | |
| } | |
| func isEmailVerified () -> Bool { | |
| return NSUserDefaults.standardUserDefaults().boolForKey(MNGSettingsKeys.EmailVerified.rawValue) ?? false | |
| } | |
| func newCloudUserId (newStringValue:String) { | |
| defaults.setObject(newStringValue, forKey: MNGSettingsKeys.CloudUserId.rawValue) | |
| defaults.synchronize() | |
| } | |
| func cloudUserId () -> String { | |
| if let value = NSUserDefaults.standardUserDefaults().objectForKey(MNGSettingsKeys.CloudUserId.rawValue) { | |
| return value as! String | |
| } | |
| return String() | |
| } | |
| func newAppUserId (newStringValue:String) { | |
| defaults.setObject(newStringValue, forKey: MNGSettingsKeys.AppUserId.rawValue) | |
| defaults.synchronize() | |
| } | |
| func AppUserId () -> String? { | |
| if let value:String? = defaults.objectForKey(MNGSettingsKeys.AppUserId.rawValue) as? String where value?.characters.count > 0 { | |
| return value! | |
| } else { | |
| self.newAppUserId(NSUUID().UUIDString) | |
| if let newValue:String? = defaults.objectForKey(MNGSettingsKeys.AppUserId.rawValue) as? String where newValue?.characters.count > 0 { | |
| return newValue! | |
| } | |
| } | |
| return nil | |
| } | |
| func newUserRegistrationRecordId (newStringValue:String) { | |
| defaults.setObject(newStringValue, forKey: MNGSettingsKeys.UserRegistrationRecordId.rawValue) | |
| defaults.synchronize() | |
| } | |
| func UserRegistrationRecordId () -> String? { | |
| return (defaults.objectForKey(MNGSettingsKeys.UserRegistrationRecordId.rawValue) as? String)! ?? "" | |
| } | |
| func newVideoStoryAssetPath (newStringValue:String) { | |
| defaults.setObject(newStringValue, forKey: MNGSettingsKeys.VideoStoryAssetPath.rawValue) | |
| defaults.synchronize() | |
| } | |
| func VideoStoryAssetPath () -> String? { | |
| return (defaults.objectForKey(MNGSettingsKeys.VideoStoryAssetPath.rawValue) as? String)! ?? "" | |
| } | |
| func debugResetAllUserDefaults () { | |
| defaults.removePersistentDomainForName(NSBundle.mainBundle().bundleIdentifier!) | |
| defaults.synchronize() | |
| } | |
| func debugResetUserDefault(key: String) { | |
| defaults.removeObjectForKey(key) | |
| defaults.synchronize() | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment