RegisterLoginViewController.swift 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  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. deinit {
  13. NotificationCenter.default.removeObserver(self)
  14. }
  15. override func viewWillDisappear(_ animated: Bool) {
  16. super.viewDidDisappear(animated)
  17. player.pause()
  18. }
  19. override func viewWillAppear(_ animated: Bool) {
  20. super.viewDidDisappear(animated)
  21. player.play()
  22. }
  23. override func viewDidLoad() {
  24. super.viewDidLoad()
  25. setupViews()
  26. setupLayouts()
  27. setupData()
  28. }
  29. override func setupViews() {
  30. navigationBar.wr_setBackgroundAlpha(alpha: 0)
  31. navigationBar.wr_setBottomLineHidden(hidden: true)
  32. navigationBar.wr_setLeftButton(image: kImage(name: "nav_close_white")!)
  33. statusBarStyle = .lightContent
  34. view.addSubview(playerView)
  35. view.addSubview(bgView)
  36. view.addSubview(iconImageView)
  37. view.addSubview(oneBuiltLoginButton)
  38. view.addSubview(mobileLoginButton)
  39. view.addSubview(weixinLoginButton)
  40. view.addSubview(QQLoginButton)
  41. view.insertSubview(navigationBar, aboveSubview: playerView)
  42. view.insertSubview(navigationBar, aboveSubview: bgView)
  43. }
  44. override func setupLayouts() {
  45. playerView.snp.makeConstraints { (make) in
  46. make.edges.equalToSuperview()
  47. }
  48. bgView.snp.makeConstraints { (make) in
  49. make.edges.equalToSuperview()
  50. }
  51. iconImageView.snp.makeConstraints { (make) in
  52. make.centerX.equalToSuperview()
  53. make.top.equalTo(56 + kNavBarTotalHeight)
  54. }
  55. oneBuiltLoginButton.snp.makeConstraints { (make) in
  56. make.bottom.equalTo(mobileLoginButton.snp.top).offset(-15)
  57. make.left.equalTo(30)
  58. make.right.equalTo(-30)
  59. make.height.equalTo(48)
  60. }
  61. oneBuiltLoginButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5)
  62. mobileLoginButton.snp.makeConstraints { (make) in
  63. make.bottom.equalTo(weixinLoginButton.snp.top).offset(-20)
  64. make.left.equalTo(30)
  65. make.right.equalTo(-30)
  66. make.height.equalTo(48)
  67. }
  68. mobileLoginButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5)
  69. weixinLoginButton.snp.makeConstraints { (make) in
  70. make.bottom.equalTo(-40)
  71. make.centerX.equalToSuperview().offset(-30)
  72. }
  73. QQLoginButton.snp.makeConstraints { (make) in
  74. make.bottom.equalTo(-40)
  75. make.centerX.equalToSuperview().offset(30)
  76. }
  77. }
  78. override func setupData() {
  79. navigationBar.onClickLeftButton = {
  80. [weak self] in
  81. self?.navigationController?.dismiss(animated: true, completion: nil)
  82. }
  83. //一键登录
  84. oneBuiltLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  85. ATAuthSDKManager.oneBuiltLogin(vc:self!)
  86. }).disposed(by: disposeBag)
  87. // 手机验证码或密码登录
  88. mobileLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  89. self?.navigationController?.pushViewController(MobileLoginViewController(), animated: true)
  90. }).disposed(by: disposeBag)
  91. //微信登录
  92. weixinLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  93. self?.tripartiteLogin(platformType: UMSocialPlatformType.wechatSession, loginType: LoginType.weixin)
  94. }).disposed(by: disposeBag)
  95. //QQ登录
  96. QQLoginButton.rx.tap.subscribe(onNext: { [weak self] in
  97. self?.tripartiteLogin(platformType: UMSocialPlatformType.QQ, loginType: LoginType.qq)
  98. }).disposed(by: disposeBag)
  99. }
  100. private lazy var bgView: UIView = {
  101. let bgView = UIView()
  102. bgView.backgroundColor = UIColor(white: 0, alpha: 0.68)
  103. return bgView
  104. }()
  105. private lazy var iconImageView: UIImageView = {
  106. let iconImageView = UIImageView()
  107. iconImageView.image = kImage(name: "logo_slogan")
  108. return iconImageView
  109. }()
  110. private lazy var oneBuiltLoginButton: UIButton = {
  111. let oneBuiltLoginButton = UIButton(type: UIButton.ButtonType.custom)
  112. oneBuiltLoginButton.setTitle("手机号码一键登录", for: UIControl.State.normal)
  113. oneBuiltLoginButton.setTitleColor(k333333Color, for: UIControl.State.normal)
  114. oneBuiltLoginButton.titleLabel?.font = kMediumFont16
  115. oneBuiltLoginButton.setImage(kImage(name: "login_ico_iphone"), for: UIControl.State.normal)
  116. oneBuiltLoginButton.setBackgroundImage(UIImage.imageWithColor(color: kffffffColor), for: UIControl.State.normal)
  117. oneBuiltLoginButton.layer.cornerRadius = 24
  118. oneBuiltLoginButton.layer.masksToBounds = true
  119. return oneBuiltLoginButton
  120. }()
  121. private lazy var mobileLoginButton: UIButton = {
  122. let mobileLoginButton = UIButton(type: UIButton.ButtonType.custom)
  123. mobileLoginButton.setTitle("手机验证码或密码登录", for: UIControl.State.normal)
  124. mobileLoginButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
  125. mobileLoginButton.titleLabel?.font = kMediumFont16
  126. mobileLoginButton.setImage(kImage(name: "login_ico_password"), for: UIControl.State.normal)
  127. mobileLoginButton.setBackgroundImage(UIImage.imageWithColor(color: kffffffColor.withAlphaComponent(0.52)), for: UIControl.State.normal)
  128. mobileLoginButton.cornerRadius = 24
  129. mobileLoginButton.masksToBounds = true
  130. return mobileLoginButton
  131. }()
  132. private lazy var weixinLoginButton: UIButton = {
  133. let weixinLoginButton = UIButton(type: UIButton.ButtonType.custom)
  134. weixinLoginButton.setImage(kImage(name: "login_ico_wehcat"), for: UIControl.State.normal)
  135. return weixinLoginButton
  136. }()
  137. private lazy var QQLoginButton: UIButton = {
  138. let QQLoginButton = UIButton(type: UIButton.ButtonType.custom)
  139. QQLoginButton.setImage(kImage(name: "login_ico_qq"), for: UIControl.State.normal)
  140. return QQLoginButton
  141. }()
  142. private lazy var playerView: UIView = {
  143. let playerView = UIView()
  144. return playerView
  145. }()
  146. private lazy var player: AVPlayer = {
  147. //定义一个视频文件路径
  148. let filePath = Bundle.main.path(forResource: "login_video", ofType: "mp4")
  149. let videoURL = URL(fileURLWithPath: filePath!)
  150. //定义一个playerItem,并监听相关的通知
  151. let playerItem = AVPlayerItem(url: videoURL)
  152. NotificationCenter.default.addObserver(self,
  153. selector: #selector(playerDidFinishPlaying),
  154. name: NSNotification.Name.AVPlayerItemDidPlayToEndTime,
  155. object: playerItem)
  156. let player = AVPlayer(playerItem: playerItem)
  157. //设置大小和位置(全屏)
  158. let playerLayer = AVPlayerLayer(player: player)
  159. playerLayer.frame = self.view.bounds
  160. playerLayer.videoGravity = .resizeAspectFill
  161. //添加到界面上
  162. playerView.layer.addSublayer(playerLayer)
  163. return player
  164. }()
  165. @objc func playerDidFinishPlaying(notification:Notification) {
  166. player.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero) {[weak self] (finished) in
  167. self?.player.play()
  168. }
  169. }
  170. //第三方登录
  171. func tripartiteLogin(platformType:UMSocialPlatformType,loginType:LoginType) {
  172. UMManager.shared.loginGetUserInfo(platformType: platformType) { (userModel) -> (Void) in
  173. let wxLoginModel = userModel
  174. 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: {
  175. [weak self] (userModel) -> (Void) in
  176. let userModel = userModel as! UserModel
  177. if (userModel.mobile != nil && userModel.mobile != "" ) {
  178. UserModel.shared().setModel(model: userModel)
  179. RegisterLoginManager.registerLoginSuccessApi(vc: self!)
  180. }else {
  181. Mediator.push(RegisterLoginRouterModuleType.pushBindPhoneNumber(bindPhoneNumberVCType: .weixinlogin, userModel: userModel))
  182. }
  183. })
  184. }
  185. }
  186. }