// // RegisterLoginViewController.swift // RainbowPlanet // // Created by 南鑫林 on 2019/3/22. // Copyright © 2019 南鑫林. All rights reserved. // import UIKit import SwiftyMediator import SwiftyJSON class RegisterLoginViewController: BaseViewController { override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } deinit { NXLLog("deinit") NotificationCenter.default.removeObserver(self) } override func viewDidLoad() { super.viewDidLoad() setupViews() setupLayouts() setupData() } override func setupViews() { navigationBar.wr_setBackgroundAlpha(alpha: 0) navigationBar.wr_setBottomLineHidden(hidden: true) navigationBar.wr_setLeftButton(image: kImage(name: "nav_close_white")!) statusBarStyle = .lightContent view.addSubview(playerView) view.addSubview(bgView) view.addSubview(iconImageView) view.addSubview(oneBuiltLoginButton) view.addSubview(mobileLoginButton) view.addSubview(weixinLoginButton) view.addSubview(QQLoginButton) view.addSubview(agreementLabel) view.addSubview(agreementButton) view.insertSubview(navigationBar, aboveSubview: playerView) view.insertSubview(navigationBar, aboveSubview: bgView) } override func setupLayouts() { playerView.snp.makeConstraints { (make) in make.edges.equalToSuperview() } bgView.snp.makeConstraints { (make) in make.edges.equalToSuperview() } iconImageView.snp.makeConstraints { (make) in make.centerX.equalToSuperview() make.top.equalTo(56 + kNavBarTotalHeight) } oneBuiltLoginButton.snp.makeConstraints { (make) in make.bottom.equalTo(mobileLoginButton.snp.top).offset(-15) make.left.equalTo(30) make.right.equalTo(-30) make.height.equalTo(48) } oneBuiltLoginButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5) mobileLoginButton.snp.makeConstraints { (make) in make.bottom.equalTo(QQLoginButton.snp.top).offset(-20) make.left.equalTo(30) make.right.equalTo(-30) make.height.equalTo(48) } mobileLoginButton.layoutButton(edgeInsetsStyle: ButtonEdgeInsetsStyle.left, imageTitleSpace: 5) weixinLoginButton.snp.makeConstraints { (make) in make.bottom.equalTo(agreementLabel.snp.top).offset(-15) make.centerX.equalToSuperview().offset(-30) } QQLoginButton.snp.makeConstraints { (make) in make.bottom.equalTo(agreementLabel.snp.top).offset(-15) make.centerX.equalToSuperview().offset(30) } agreementLabel.snp.makeConstraints { (make) in make.bottom.equalTo(-(kSafeTabBarHeight+20)) make.centerX.equalToSuperview().offset(10) } agreementButton.snp.makeConstraints { (make) in make.right.equalTo(agreementLabel.snp.left).offset(-5) make.centerY.equalTo(agreementLabel) make.size.equalTo(15) } } override func setupData() { player.play() if (UMSocialManager.default()?.isInstall(.wechatSession) ?? true) { //验证 weixinLoginButton.isHidden = false weixinLoginButton.snp.updateConstraints { (make) in make.centerX.equalToSuperview().offset(-30) } QQLoginButton.snp.updateConstraints { (make) in make.centerX.equalToSuperview().offset(30) } }else { weixinLoginButton.isHidden = true QQLoginButton.snp.updateConstraints { (make) in make.centerX.equalToSuperview() } } 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) { (data) in Mediator.push(H5RouterModuleType.pushContentId6) } 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) { (data) in Mediator.push(H5RouterModuleType.pushContentId11) } navigationBar.onClickLeftButton = { [weak self] in //移除本地用户信息 UserModel.shared().removeLoginModel() self?.navigationController?.dismiss(animated: true, completion: nil) } //一键登录 weak var weakSelf = self oneBuiltLoginButton.rx.tap.subscribe(onNext: {[weak self] _ in if (self?.agreementButton.isSelected)! { ATAuthSDKManager.oneBuiltLogin(vc:weakSelf) }else { SwiftProgressHUD.shared().showText("请您先同意用户协议") } }).disposed(by: disposeBag) // 手机验证码或密码登录 mobileLoginButton.rx.tap.subscribe(onNext: { [weak self] in if (self?.agreementButton.isSelected)! { self?.navigationController?.pushViewController(MobileLoginViewController(), animated: true) }else { SwiftProgressHUD.shared().showText("请您先同意用户协议") } }).disposed(by: disposeBag) //微信登录 weixinLoginButton.rx.tap.subscribe(onNext: { [weak self] in self?.tripartiteLogin(platformType: UMSocialPlatformType.wechatSession, loginType: LoginType.weixin) }).disposed(by: disposeBag) //QQ登录 QQLoginButton.rx.tap.subscribe(onNext: { [weak self] in self?.tripartiteLogin(platformType: UMSocialPlatformType.QQ, loginType: LoginType.qq) }).disposed(by: disposeBag) agreementButton.rx.tap.subscribe(onNext: { [weak self] in self?.agreementButton.isSelected = !(self?.agreementButton.isSelected)! }).disposed(by: disposeBag) } private lazy var bgView: UIView = { let bgView = UIView() bgView.backgroundColor = UIColor(white: 0, alpha: 0.68) return bgView }() private lazy var iconImageView: UIImageView = { let iconImageView = UIImageView() iconImageView.image = kImage(name: "logo_slogan") return iconImageView }() private lazy var oneBuiltLoginButton: UIButton = { let oneBuiltLoginButton = UIButton(type: UIButton.ButtonType.custom) oneBuiltLoginButton.setTitle("手机号码一键登录", for: UIControl.State.normal) oneBuiltLoginButton.setTitleColor(k333333Color, for: UIControl.State.normal) oneBuiltLoginButton.titleLabel?.font = kMediumFont16 oneBuiltLoginButton.setImage(kImage(name: "login_ico_iphone"), for: UIControl.State.normal) oneBuiltLoginButton.setBackgroundImage(UIImage.imageWithColor(color: kffffffColor), for: UIControl.State.normal) oneBuiltLoginButton.layer.cornerRadius = 24 oneBuiltLoginButton.layer.masksToBounds = true return oneBuiltLoginButton }() private lazy var mobileLoginButton: UIButton = { let mobileLoginButton = UIButton(type: UIButton.ButtonType.custom) mobileLoginButton.setTitle("手机验证码或密码登录", for: UIControl.State.normal) mobileLoginButton.setTitleColor(kffffffColor, for: UIControl.State.normal) mobileLoginButton.titleLabel?.font = kMediumFont16 mobileLoginButton.setImage(kImage(name: "login_ico_password"), for: UIControl.State.normal) mobileLoginButton.setBackgroundImage(UIImage.imageWithColor(color: kffffffColor.withAlphaComponent(0.52)), for: UIControl.State.normal) mobileLoginButton.cornerRadius = 24 mobileLoginButton.masksToBounds = true return mobileLoginButton }() private lazy var weixinLoginButton: UIButton = { let weixinLoginButton = UIButton(type: UIButton.ButtonType.custom) weixinLoginButton.setImage(kImage(name: "login_ico_wehcat"), for: UIControl.State.normal) return weixinLoginButton }() private lazy var QQLoginButton: UIButton = { let QQLoginButton = UIButton(type: UIButton.ButtonType.custom) QQLoginButton.setImage(kImage(name: "login_ico_qq"), for: UIControl.State.normal) return QQLoginButton }() private lazy var agreementLabel: FMLinkLabel = { let agreementLabel = FMLinkLabel() agreementLabel.numberOfLines = 0 agreementLabel.textColor = kbbbbbbColor agreementLabel.font = kRegularFont12 agreementLabel.isUserInteractionEnabled = true agreementLabel.text = "登录即表示你已阅读并同意 由你用户协议 和 隐私条款" agreementLabel.textAlignment = .center return agreementLabel }() private lazy var agreementButton: UIButton = { let agreementButton = UIButton(type: UIButton.ButtonType.custom) agreementButton.isSelected = true agreementButton.setImage(kImage(name: "icon_check"), for: UIControl.State.selected) agreementButton.setImage(kImage(name: "icon_uncheck"), for: UIControl.State.normal) return agreementButton }() private lazy var playerView: UIView = { let playerView = UIView() return playerView }() private lazy var player: AVPlayer = { //定义一个视频文件路径 let filePath = Bundle.main.path(forResource: "login_video", ofType: "mp4") let videoURL = URL(fileURLWithPath: filePath!) //定义一个playerItem,并监听相关的通知 let playerItem = AVPlayerItem(url: videoURL) NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerItem) let player = AVPlayer(playerItem: playerItem) //设置大小和位置(全屏) let playerLayer = AVPlayerLayer(player: player) playerLayer.frame = self.view.bounds playerLayer.videoGravity = .resizeAspectFill //添加到界面上 playerView.layer.addSublayer(playerLayer) return player }() @objc func playerDidFinishPlaying(notification:Notification) { player.seek(to: .zero, toleranceBefore: .zero, toleranceAfter: .zero) {[weak self] (finished) in self?.player.play() } } //第三方登录 func tripartiteLogin(platformType:UMSocialPlatformType,loginType:LoginType) { if self.agreementButton.isSelected { UMManager.shared.loginGetUserInfo(platformType: platformType, currentViewController: self) { [weak self] (userModel) -> (Void) in let wxLoginModel = userModel 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: { [weak self] (userModel) -> (Void) in let userModel = userModel as! UserModel if (userModel.mobile != nil && userModel.mobile != "" ) { UserModel.shared().setModel(model: userModel) RegisterLoginManager.registerLoginSuccessApi(vc: self) }else { if loginType == .qq { Mediator.push(RegisterLoginRouterModuleType.pushBindPhoneNumber(bindPhoneNumberVCType: .qqLogin, userModel: userModel)) } if loginType == .weixin { Mediator.push(RegisterLoginRouterModuleType.pushBindPhoneNumber(bindPhoneNumberVCType: .weixinlogin, userModel: userModel)) } } }) } }else { SwiftProgressHUD.shared().showText("请您先同意用户协议") } } }