Common.swift 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. //
  2. // Common.swift
  3. // o2app
  4. //
  5. // Created by 刘振兴 on 2017/8/18.
  6. // Copyright © 2017年 zone. All rights reserved.
  7. //
  8. import UIKit
  9. import SwiftValidator
  10. import SwiftyUserDefaults
  11. import CocoaLumberjack
  12. import O2OA_Auth_SDK
  13. // 当前系统版本
  14. let kCersion = (UIDevice.current.systemVersion as NSString).floatValue
  15. // 屏幕宽度
  16. let kScreenH = UIScreen.main.bounds.height
  17. // 屏幕高度
  18. let kScreenW = UIScreen.main.bounds.width
  19. // MARK:- 自定义手机号码检校规则
  20. public class MobileNumberRule: RegexRule {
  21. static let regex = "^\\d{11}$"
  22. convenience init(message : String = "Not a valid Mobile Number"){
  23. self.init(regex: MobileNumberRule.regex, message : message)
  24. }
  25. }
  26. // MARK:- 所有配置定义,使用SwiftyUserDefaults实现存储
  27. protocol AppConfigEnable {
  28. //是否第一次使用应用,显示引导页使用
  29. var isFirstTime:Bool? { get set }
  30. // IM是否已经登录
  31. var openIMLoginStatus:Bool? { get set }
  32. // 跳转用的 从那个页面过来的
  33. var taskIndex: Int {get set}
  34. var appBackType: Int {get set}
  35. var notificationGranted: Bool {get set}
  36. var firstGranted: Bool {get set}
  37. var accountIsSecurity: Bool {get set}
  38. var firstLoad: Bool {get set}
  39. //服务器 移动端配置hash值 判断是否更新了
  40. var customStyleHash: String {get set}
  41. }
  42. // MARK:- 扩展定义的键
  43. extension DefaultsKeys {
  44. static let isFirstTime = DefaultsKey<Bool?>("isFirstTime")
  45. static let openIMLoginStatus = DefaultsKey<Bool?>("openIMLoginStatus")
  46. static let taskIndex = DefaultsKey<Int>("taskIndex")
  47. static let appBackType = DefaultsKey<Int>("appBackType")
  48. static let notificationGranted = DefaultsKey<Bool>("notificationGranted")
  49. static let firstGranted = DefaultsKey<Bool>("fristGranted")
  50. static let accountIsSecurity = DefaultsKey<Bool>("accountIsSecurity")
  51. static let firstLoad = DefaultsKey<Bool>("firstLoad")
  52. static let customStyleHash = DefaultsKey<String>("customStyleHash")
  53. }
  54. // MARK:- Default App Config
  55. public class AppConfigSettings: AppConfigEnable {
  56. var customStyleHash: String {
  57. get {
  58. return Defaults[.customStyleHash]
  59. }
  60. set {
  61. Defaults[.customStyleHash] = newValue
  62. }
  63. }
  64. var openIMLoginStatus: Bool?{
  65. get {
  66. guard let openIMLoginStatus = Defaults[.openIMLoginStatus] else {
  67. return false
  68. }
  69. return openIMLoginStatus
  70. }
  71. set {
  72. Defaults[.openIMLoginStatus] = newValue
  73. }
  74. }
  75. var isFirstTime: Bool? {
  76. get {
  77. guard let firstTime = Defaults[.isFirstTime] else {
  78. return true
  79. }
  80. return firstTime
  81. }
  82. set {
  83. Defaults[.isFirstTime] = newValue
  84. }
  85. }
  86. var notificationGranted: Bool {
  87. get {
  88. return Defaults[.notificationGranted]
  89. }
  90. set {
  91. Defaults[.notificationGranted] = newValue
  92. }
  93. }
  94. var firstGranted: Bool {
  95. get {
  96. return Defaults[.firstGranted]
  97. }
  98. set {
  99. Defaults[.firstGranted] = newValue
  100. }
  101. }
  102. var accountIsSecurity: Bool {
  103. get {
  104. return Defaults[.accountIsSecurity]
  105. }
  106. set {
  107. Defaults[.accountIsSecurity] = newValue
  108. }
  109. }
  110. var firstLoad: Bool {
  111. get {
  112. return Defaults[.firstLoad]
  113. }
  114. set {
  115. Defaults[.firstLoad] = newValue
  116. }
  117. }
  118. var taskIndex: Int {
  119. get {
  120. return Defaults[.taskIndex]
  121. }
  122. set {
  123. Defaults[.taskIndex] = newValue
  124. }
  125. }
  126. var appBackType: Int {
  127. get {
  128. return Defaults[.appBackType]
  129. }
  130. set {
  131. Defaults[.appBackType] = newValue
  132. }
  133. }
  134. public func removeAllConfig() {
  135. Defaults.removeAll()
  136. }
  137. static let shared:AppConfigSettings = {
  138. return AppConfigSettings()
  139. }()
  140. }
  141. // MARK:- OOCustomImageManager
  142. enum OOCustomImageKey:NSString {
  143. case launch_logo = "launch_logo"
  144. case login_avatar = "login_avatar"
  145. case index_bottom_menu_logo_blur = "index_bottom_menu_logo_blur"
  146. case index_bottom_menu_logo_focus = "index_bottom_menu_logo_focus"
  147. case people_avatar_default = "people_avatar_default"
  148. case process_default = "process_default"
  149. case setup_about_logo = "setup_about_logo"
  150. }
  151. class OOCustomImageManager {
  152. static let `default`:OOCustomImageManager = {
  153. return OOCustomImageManager()
  154. }()
  155. private var imageCache = NSCache<NSString,UIImage>()
  156. private init() {
  157. if let configInfo = O2AuthSDK.shared.customStyle() {
  158. configInfo.images?.forEach({ (ooImage) in
  159. let value = ooImage.value!
  160. let data = Data(base64Encoded: value)
  161. let image = UIImage(data: data!)
  162. let scaleImage = image?.scaledImageFrom3x()
  163. imageCache.setObject(scaleImage!, forKey: ooImage.name! as NSString)
  164. })
  165. }
  166. }
  167. func loadImage(_ key:OOCustomImageKey) -> UIImage? {
  168. if let image = imageCache.object(forKey: key.rawValue) {
  169. return image
  170. }
  171. return UIImage(named: "icon_zhuye_pre")
  172. }
  173. }