RegisterLoginViewController.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. //
  2. // RegisterLoginViewController.swift
  3. // RainbowPlanet
  4. //
  5. // Created by 南鑫林 on 2019/3/22.
  6. // Copyright © 2019 南鑫林. All rights reserved.
  7. //
  8. import UIKit
  9. import SwiftyMediator
  10. import SwiftyJSON
  11. class RegisterLoginViewController: BaseViewController {
  12. override func didReceiveMemoryWarning() {
  13. super.didReceiveMemoryWarning()
  14. }
  15. deinit {
  16. NXLLog("deinit")
  17. NotificationCenter.default.removeObserver(self)
  18. }
  19. override func viewDidLoad() {
  20. super.viewDidLoad()
  21. setupViews()
  22. setupLayouts()
  23. setupData()
  24. }
  25. override func setupViews() {
  26. navigationBar.wr_setBackgroundAlpha(alpha: 0)
  27. navigationBar.wr_setBottomLineHidden(hidden: true)
  28. navigationBar.wr_setLeftButton(image: kImage(name: "nav_close_white")!)
  29. statusBarStyle = .lightContent
  30. view.addSubview(playerView)
  31. view.addSubview(bgView)
  32. view.addSubview(iconImageView)
  33. view.addSubview(oneBuiltLoginButton)
  34. view.addSubview(mobileLoginButton)
  35. view.addSubview(weixinLoginButton)
  36. view.addSubview(QQLoginButton)
  37. view.addSubview(agreementLabel)
  38. view.addSubview(agreementButton)
  39. view.insertSubview(navigationBar, aboveSubview: playerView)
  40. view.insertSubview(navigationBar, aboveSubview: bgView)
  41. }
  42. override func setupLayouts() {
  43. playerView.snp.makeConstraints { (make) in
  44. make.edges.equalToSuperview()
  45. }
  46. bgView.snp.makeConstraints { (make) in
  47. make.edges.equalToSuperview()
  48. }
  49. iconImageView.snp.makeConstraints { (make) in
  50. make.centerX.equalToSuperview()
  51. make.top.equalTo(56 + kNavBarTotalHeight)
  52. }
  53. oneBuiltLoginButton.snp.makeConstraints { (make) in
  54. make.bottom.equalTo(mobileLoginButton.snp.top).offset(-15)
  55. make.left.equalTo(30)
  56. make.right.equalTo(-30)
  57. make.height.equalTo(48)
  58. }
  59. oneBuiltLoginButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5)
  60. mobileLoginButton.snp.makeConstraints { (make) in
  61. make.bottom.equalTo(QQLoginButton.snp.top).offset(-20)
  62. make.left.equalTo(30)
  63. make.right.equalTo(-30)
  64. make.height.equalTo(48)
  65. }
  66. mobileLoginButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5)
  67. weixinLoginButton.snp.makeConstraints { (make) in
  68. make.bottom.equalTo(agreementLabel.snp.top).offset(-15)
  69. make.centerX.equalToSuperview().offset(-30)
  70. }
  71. QQLoginButton.snp.makeConstraints { (make) in
  72. make.bottom.equalTo(agreementLabel.snp.top).offset(-15)
  73. make.centerX.equalToSuperview().offset(30)
  74. }
  75. agreementLabel.snp.makeConstraints { (make) in
  76. make.bottom.equalTo(-(kSafeTabBarHeight+20))
  77. make.centerX.equalToSuperview().offset(10)
  78. }
  79. agreementButton.snp.makeConstraints { (make) in
  80. make.right.equalTo(agreementLabel.snp.left).offset(-5)
  81. make.centerY.equalTo(agreementLabel)
  82. make.size.equalTo(15)
  83. }
  84. }
  85. override func setupData() {
  86. player.play()
  87. if (UMSocialManager.default()?.isInstall(.wechatSession) ?? true) { //验证
  88. weixinLoginButton.isHidden = false
  89. weixinLoginButton.snp.updateConstraints { (make) in
  90. make.centerX.equalToSuperview().offset(-30)
  91. }
  92. QQLoginButton.snp.updateConstraints { (make) in
  93. make.centerX.equalToSuperview().offset(30)
  94. }
  95. }else {
  96. weixinLoginButton.isHidden = true
  97. QQLoginButton.snp.updateConstraints { (make) in
  98. make.centerX.equalToSuperview()
  99. }
  100. }
  101. agreementLabel.addClickText("由你用户协议", attributeds: [NSAttributedString.Key.font:kRegularFont13 as Any,NSAttributedString.Key.foregroundColor:kffffffColor,NSAttributedString.Key.underlineStyle:NSUnderlineStyle.single.rawValue,NSAttributedString.Key.underlineColor:kffffffColor], transmitBody: nil) {
  102. (data) in
  103. Mediator.push(H5RouterModuleType.pushContentId6)
  104. }
  105. agreementLabel.addClickText("隐私条款", attributeds: [NSAttributedString.Key.font:kRegularFont13 as Any,NSAttributedString.Key.foregroundColor:kffffffColor,NSAttributedString.Key.underlineStyle:NSUnderlineStyle.single.rawValue,NSAttributedString.Key.underlineColor:kffffffColor], transmitBody: nil) {
  106. (data) in
  107. Mediator.push(H5RouterModuleType.pushContentId11)
  108. }
  109. navigationBar.onClickLeftButton = {
  110. [weak self] in
  111. //移除本地用户信息
  112. UserModel.shared().removeLoginModel()
  113. self?.navigationController?.dismiss(animated: true, completion: nil)
  114. }
  115. //一键登录
  116. weak var weakSelf = self
  117. oneBuiltLoginButton.rx.tap.subscribe(onNext: {[weak self] _ in
  118. if (self?.agreementButton.isSelected)! {
  119. ATAuthSDKManager.oneBuiltLogin(vc:weakSelf)
  120. }else {
  121. SwiftProgressHUD.shared().showText("请您先同意用户协议")
  122. }
  123. }).disposed(by: disposeBag)
  124. // 手机验证码或密码登录
  125. mobileLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  126. if (self?.agreementButton.isSelected)! {
  127. self?.navigationController?.pushViewController(MobileLoginViewController(), animated: true)
  128. }else {
  129. SwiftProgressHUD.shared().showText("请您先同意用户协议")
  130. }
  131. }).disposed(by: disposeBag)
  132. //微信登录
  133. weixinLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  134. self?.tripartiteLogin(platformType: UMSocialPlatformType.wechatSession, loginType: LoginType.weixin)
  135. }).disposed(by: disposeBag)
  136. //QQ登录
  137. QQLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  138. self?.tripartiteLogin(platformType: UMSocialPlatformType.QQ, loginType: LoginType.qq)
  139. }).disposed(by: disposeBag)
  140. agreementButton.rx.tap.subscribe(onNext: { [weak self] in
  141. self?.agreementButton.isSelected = !(self?.agreementButton.isSelected)!
  142. }).disposed(by: disposeBag)
  143. }
  144. private lazy var bgView: UIView = {
  145. let bgView = UIView()
  146. bgView.backgroundColor = UIColor(white: 0, alpha: 0.68)
  147. return bgView
  148. }()
  149. private lazy var iconImageView: UIImageView = {
  150. let iconImageView = UIImageView()
  151. iconImageView.image = kImage(name: "logo_slogan")
  152. return iconImageView
  153. }()
  154. private lazy var oneBuiltLoginButton: UIButton = {
  155. let oneBuiltLoginButton = UIButton(type: UIButton.ButtonType.custom)
  156. oneBuiltLoginButton.setTitle("手机号码一键登录", for: UIControl.State.normal)
  157. oneBuiltLoginButton.setTitleColor(k333333Color, for: UIControl.State.normal)
  158. oneBuiltLoginButton.titleLabel?.font = kMediumFont16
  159. oneBuiltLoginButton.setImage(kImage(name: "login_ico_iphone"), for: UIControl.State.normal)
  160. oneBuiltLoginButton.setBackgroundImage(UIImage.imageWithColor(color: kffffffColor), for: UIControl.State.normal)
  161. oneBuiltLoginButton.layer.cornerRadius = 24
  162. oneBuiltLoginButton.layer.masksToBounds = true
  163. return oneBuiltLoginButton
  164. }()
  165. private lazy var mobileLoginButton: UIButton = {
  166. let mobileLoginButton = UIButton(type: UIButton.ButtonType.custom)
  167. mobileLoginButton.setTitle("手机验证码或密码登录", for: UIControl.State.normal)
  168. mobileLoginButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
  169. mobileLoginButton.titleLabel?.font = kMediumFont16
  170. mobileLoginButton.setImage(kImage(name: "login_ico_password"), for: UIControl.State.normal)
  171. mobileLoginButton.setBackgroundImage(UIImage.imageWithColor(color: kffffffColor.withAlphaComponent(0.52)), for: UIControl.State.normal)
  172. mobileLoginButton.cornerRadius = 24
  173. mobileLoginButton.masksToBounds = true
  174. return mobileLoginButton
  175. }()
  176. private lazy var weixinLoginButton: UIButton = {
  177. let weixinLoginButton = UIButton(type: UIButton.ButtonType.custom)
  178. weixinLoginButton.setImage(kImage(name: "login_ico_wehcat"), for: UIControl.State.normal)
  179. return weixinLoginButton
  180. }()
  181. private lazy var QQLoginButton: UIButton = {
  182. let QQLoginButton = UIButton(type: UIButton.ButtonType.custom)
  183. QQLoginButton.setImage(kImage(name: "login_ico_qq"), for: UIControl.State.normal)
  184. return QQLoginButton
  185. }()
  186. private lazy var agreementLabel: FMLinkLabel = {
  187. let agreementLabel = FMLinkLabel()
  188. agreementLabel.numberOfLines = 0
  189. agreementLabel.textColor = kbbbbbbColor
  190. agreementLabel.font = kRegularFont12
  191. agreementLabel.isUserInteractionEnabled = true
  192. agreementLabel.text = "登录即表示你已阅读并同意 由你用户协议 和 隐私条款"
  193. agreementLabel.textAlignment = .center
  194. return agreementLabel
  195. }()
  196. private lazy var agreementButton: UIButton = {
  197. let agreementButton = UIButton(type: UIButton.ButtonType.custom)
  198. agreementButton.isSelected = true
  199. agreementButton.setImage(kImage(name: "icon_check"), for: UIControl.State.selected)
  200. agreementButton.setImage(kImage(name: "icon_uncheck"), for: UIControl.State.normal)
  201. return agreementButton
  202. }()
  203. private lazy var playerView: UIView = {
  204. let playerView = UIView()
  205. return playerView
  206. }()
  207. private lazy var player: AVPlayer = {
  208. //定义一个视频文件路径
  209. let filePath = Bundle.main.path(forResource: "login_video", ofType: "mp4")
  210. let videoURL = URL(fileURLWithPath: filePath!)
  211. //定义一个playerItem,并监听相关的通知
  212. let playerItem = AVPlayerItem(url: videoURL)
  213. NotificationCenter.default.addObserver(self,
  214. selector: #selector(playerDidFinishPlaying),
  215. name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
  216. object: playerItem)
  217. let player = AVPlayer(playerItem: playerItem)
  218. //设置大小和位置(全屏)
  219. let playerLayer = AVPlayerLayer(player: player)
  220. playerLayer.frame = self.view.bounds
  221. playerLayer.videoGravity = .resizeAspectFill
  222. //添加到界面上
  223. playerView.layer.addSublayer(playerLayer)
  224. return player
  225. }()
  226. @objc func playerDidFinishPlaying(notification:Notification) {
  227. player.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero) {[weak self] (finished) in
  228. self?.player.play()
  229. }
  230. }
  231. //第三方登录
  232. func tripartiteLogin(platformType:UMSocialPlatformType,loginType:LoginType) {
  233. if self.agreementButton.isSelected {
  234. UMManager.shared.loginGetUserInfo(platformType: platformType, currentViewController: self) {
  235. [weak self] (userModel) -> (Void) in
  236. let wxLoginModel = userModel
  237. SwiftMoyaNetWorkServiceUser.shared().userTripartiteRegisterTLoginApi(loginType:loginType,open_id: wxLoginModel.open_id, union_id: wxLoginModel.union_id, avatar: wxLoginModel.avatar, username: wxLoginModel.username, gender: wxLoginModel.gender, completion: {
  238. [weak self] (userModel) -> (Void) in
  239. let userModel = userModel as! UserModel
  240. if (userModel.mobile != nil && userModel.mobile != "" ) {
  241. UserModel.shared().setModel(model: userModel)
  242. RegisterLoginManager.registerLoginSuccessApi(vc: self)
  243. }else {
  244. if loginType == .qq {
  245. Mediator.push(RegisterLoginRouterModuleType.pushBindPhoneNumber(bindPhoneNumberVCType: .qqLogin, userModel: userModel))
  246. }
  247. if loginType == .weixin {
  248. Mediator.push(RegisterLoginRouterModuleType.pushBindPhoneNumber(bindPhoneNumberVCType: .weixinlogin, userModel: userModel))
  249. }
  250. }
  251. })
  252. }
  253. }else {
  254. SwiftProgressHUD.shared().showText("请您先同意用户协议")
  255. }
  256. }
  257. }