O2MainController.swift 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. //
  2. // O2MainController.swift
  3. // O2Platform
  4. //
  5. // Created by FancyLou on 2019/1/25.
  6. // Copyright © 2019 zoneland. All rights reserved.
  7. //
  8. import UIKit
  9. import CocoaLumberjack
  10. import O2OA_Auth_SDK
  11. class O2MainController: UITabBarController, UITabBarControllerDelegate {
  12. static var tabBarVC:O2MainController!
  13. static func genernateVC() -> O2MainController {
  14. // guard let vc = tabBarVC else {
  15. // tabBarVC = O2MainController()
  16. // return tabBarVC
  17. // }
  18. // return vc
  19. return O2MainController()
  20. }
  21. private var currentIndex:Int = 0
  22. // demo服务器弹出公告
  23. private var demoAlertView = O2DemoAlertView()
  24. private let viewModel:OOLoginViewModel = {
  25. return OOLoginViewModel()
  26. }()
  27. override func viewDidLoad() {
  28. super.viewDidLoad()
  29. if UIDevice.deviceModelReadable() != "Simulator" {
  30. self.checkAppVersion()
  31. }
  32. self.delegate = self
  33. _initControllers()
  34. selectedIndex = 2
  35. currentIndex = 2
  36. _loginIM()
  37. if O2IsConnect2Collect == false {
  38. //处理内部直连的时候推送的设备绑定
  39. O2JPushManager.shared.o2JPushBind()
  40. }
  41. }
  42. override func viewDidAppear(_ animated: Bool) {
  43. // 判断是否 第一次安装 是否是连接的demo服务器
  44. if let unit = O2AuthSDK.shared.bindUnit() {
  45. if "demo.o2oa.net" == unit.centerHost || "demo.o2oa.io" == unit.centerHost || "demo.o2server.io" == unit.centerHost {
  46. let tag = AppConfigSettings.shared.demoAlertTag
  47. if !tag {
  48. demoAlertView.showFallDown()
  49. AppConfigSettings.shared.demoAlertTag = true
  50. }
  51. }
  52. }
  53. }
  54. //MARK: -- delegate
  55. func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
  56. // if currentIndex == 2 && tabBarController.selectedIndex == 2 {
  57. // if tabBarController.selectedViewController is ZLNavigationController {
  58. // (tabBarController.selectedViewController as! ZLNavigationController).viewControllers.forEach { (vc) in
  59. // if vc is MailViewController {
  60. // DDLogDebug("点击了首页 portal")
  61. // (vc as! MailViewController).loadDetailSubject()
  62. // }
  63. // if vc is MainTaskSecondViewController {
  64. // DDLogDebug("点击了首页index")
  65. // }
  66. // }
  67. // }
  68. // }
  69. self.currentIndex = tabBarController.selectedIndex
  70. }
  71. private func _initControllers() {
  72. //消息
  73. let conversationVC = JCConversationListViewController()
  74. conversationVC.title = "消息"
  75. let messages = ZLNavigationController(rootViewController: conversationVC)
  76. messages.tabBarItem = UITabBarItem(title: "消息", image:UIImage(named: "icon_news_nor"), selectedImage: O2ThemeManager.image(for: "Icon.icon_news_pre"))
  77. //通讯录
  78. let addressVC = OOTabBarHelper.getVC(storyboardName: "contacts", vcName: nil)
  79. let address = ZLNavigationController(rootViewController: addressVC)
  80. address.tabBarItem = UITabBarItem(title: "通讯录", image:UIImage(named: "icon_address_g"), selectedImage: O2ThemeManager.image(for: "Icon.icon_address_list_pro"))
  81. // main
  82. let mainVC = mainController()
  83. mainVC.tabBarItem = UITabBarItem(title: nil, image: UIImage(named: "icon_zhuye_nor"), selectedImage: O2ThemeManager.image(for: "Icon.icon_zhuye_pre"))
  84. mainVC.tabBarItem.imageInsets = UIEdgeInsets(top: 6, left: 0, bottom: -6, right: 0)
  85. let blurImage = OOCustomImageManager.default.loadImage(.index_bottom_menu_logo_blur)
  86. let newBlurImage = blurImage?.withRenderingMode(.alwaysOriginal)
  87. mainVC.tabBarItem.image = newBlurImage
  88. let focusImage = OOCustomImageManager.default.loadImage(.index_bottom_menu_logo_focus)
  89. let newFocusImage = focusImage?.withRenderingMode(.alwaysOriginal)
  90. mainVC.tabBarItem.selectedImage = newFocusImage
  91. //应用
  92. let appsVC = OOTabBarHelper.getVC(storyboardName: "apps", vcName: nil)
  93. let apps = ZLNavigationController(rootViewController: appsVC)
  94. apps.tabBarItem = UITabBarItem(title: "应用", image:UIImage(named: "icon_yingyong"), selectedImage: O2ThemeManager.image(for: "Icon.icon_yingyong_pro"))
  95. //设置
  96. let settingsVC = OOTabBarHelper.getVC(storyboardName: "setting", vcName: nil)
  97. let settings = ZLNavigationController(rootViewController: settingsVC)
  98. settings.tabBarItem = UITabBarItem(title: "设置", image:UIImage(named: "setting_normal"), selectedImage: O2ThemeManager.image(for: "Icon.setting_selected"))
  99. self.viewControllers = [messages, address, mainVC, apps, settings]
  100. }
  101. private func mainController() -> UIViewController {
  102. let appid = O2AuthSDK.shared.customStyle()?.indexPortal
  103. let indexType = O2AuthSDK.shared.customStyle()?.indexType ?? "default"
  104. if indexType == "portal" {
  105. let app = DBManager.shared.queryData(appid!)
  106. let destVC = OOTabBarHelper.getVC(storyboardName: "apps", vcName: "OOMainWebVC")
  107. if let mail = destVC as? MailViewController {
  108. mail.app = app
  109. mail.isIndexShow = true
  110. let nav = ZLNavigationController(rootViewController: mail)
  111. return nav
  112. }else {
  113. let nav = ZLNavigationController(rootViewController: destVC)
  114. return nav
  115. }
  116. }else{
  117. let destVC = OOTabBarHelper.getVC(storyboardName: "task", vcName: nil)
  118. let nav = ZLNavigationController(rootViewController: destVC)
  119. return nav
  120. }
  121. }
  122. private func _loginIM() {
  123. viewModel.registerIM().then { (result) in
  124. self.viewModel.loginIM().then({ (result) in
  125. Log.debug(message: "IM登陆完成")
  126. })
  127. }.catch { (imError) in
  128. let error = imError as! OOLoginError
  129. switch error {
  130. case .imRegisterFail(let myErr):
  131. Log.debug(message: myErr.errorDescription!)
  132. self.viewModel.loginIM().then({ (result) in
  133. Log.debug(message: "IM登陆完成")
  134. }).catch({ (loginError) in
  135. Log.error(message: "im Login Error \(loginError)")
  136. })
  137. break
  138. default:
  139. break
  140. }
  141. }
  142. }
  143. private func checkAppVersion() {
  144. O2VersionManager.shared.checkAppUpdate { (info, error) in
  145. if let iosInfo = info {
  146. DDLogDebug(iosInfo.toJSONString() ?? "")
  147. let alertController = UIAlertController(title: "版本更新", message: "更新内容:\(iosInfo.content ?? "")", preferredStyle: .alert)
  148. let okAction = UIAlertAction(title: "确定", style: .default, handler: { ok in
  149. O2VersionManager.shared.updateAppVersion(info?.downloadUrl)
  150. })
  151. let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: { c in
  152. //
  153. })
  154. alertController.addAction(cancelAction)
  155. alertController.addAction(okAction)
  156. UIApplication.shared.keyWindow?.rootViewController?.present(alertController, animated: true, completion: nil)
  157. }else {
  158. DDLogInfo("没有版本更新:\(error ?? "")")
  159. }
  160. }
  161. }
  162. }