| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- //
- // profileManager.swift
- // trtcScenesDemo
- //
- // Created by xcoderliu on 12/23/19.
- // Copyright © 2019 xcoderliu. All rights reserved.
- //
- import UIKit
- import Alamofire
- import ImSDK_Plus
- import TUICore
- @objc class LoginResultModel: NSObject, Codable {
- @objc var token: String
- @objc var phone: String
- @objc var name: String
- @objc var avatar: String
- @objc var userId: String
- @objc var userSig: String = ""
-
- public init(userID: String) {
- userId = userID
- token = userID
- phone = userID
- name = userID
-
- userSig = GenerateTestUserSig.genTestUserSig(identifier: userID)
- avatar = "https://imgcache.qq.com/qcloud/public/static//avatar1_100.20191230.png"
- super.init()
- }
- }
- @objc public class ProfileManager: NSObject {
- @objc public static let shared = ProfileManager()
- private override init() {}
-
- var sessionId: String = ""
- @objc var curUserModel: LoginResultModel? = nil
-
- /// 自动登录
- /// - Parameters:
- /// - success: 成功回调
- /// - failed: 失败回调
- /// - error: 错误信息
- /// - Returns:是否可以自动登录
- @objc public func autoLogin(success: @escaping ()->Void,
- failed: @escaping (_ error: String)->Void) -> Bool {
- let tokenKey = "com.lancoo.wiseCampusApp"
- if let cacheData = UserDefaults.standard.object(forKey: tokenKey) as? Data {
- if let cacheUser = try? JSONDecoder().decode(LoginResultModel.self, from: cacheData) {
- curUserModel = cacheUser
- let fail: (_ error: String)->Void = { err in
- failed(err)
- UserDefaults.standard.set(nil, forKey: tokenKey)
- }
- login(phone: curUserModel?.userId ?? "", code: "", success: success, failed: fail, auto: true)
- return true
- }
- }
- return false
- }
-
- /// 登录
- /// - Parameters:
- /// - success: 登录成功
- /// - failed: 登录失败
- /// - error: 错误信息
- @objc public func login(phone: String, code: String, success: @escaping ()->Void,
- failed: ((_ error: String) -> Void)? = nil , auto: Bool = false) {
- let userInfo = phone.toDictionary()
- if !auto {
- let userId = userInfo["userId"] as! String
- assert(userId.count > 0)
- let userName = userInfo["userName"] as! String
- let avatar = userInfo["avatar"] as! String
- curUserModel = LoginResultModel(userID: userId)
- curUserModel?.name = userName
- curUserModel?.avatar = avatar
- }
- // cache data
- let tokenKey = "com.lancoo.wiseCampusApp"
- do {
- let cacheData = try JSONEncoder().encode(curUserModel)
- UserDefaults.standard.set(cacheData, forKey: tokenKey)
- } catch {
- print("Save Failed")
- }
- success()
- }
-
- /// 设置昵称
- /// - Parameters:
- /// - name: 昵称
- /// - success: 成功回调
- /// - failed: 失败回调
- /// - error: 错误信息
- @objc public func setNickName(name: String, success: @escaping ()->Void,
- failed: @escaping (_ error: String)->Void) {
- let userInfo = V2TIMUserFullInfo()
- let tokenKey = "com.lancoo.wiseCampusApp"
- if let cacheData = UserDefaults.standard.object(forKey: tokenKey) as? Data {
- if let cacheUser = try? JSONDecoder().decode(LoginResultModel.self, from: cacheData) {
- curUserModel = cacheUser
- userInfo.faceURL = curUserModel?.avatar
- userInfo.nickName = curUserModel?.name
- }
- }
- print("login lixiantuisong success userInfo:\(userInfo)")
- V2TIMManager.sharedInstance()?.setSelfInfo(userInfo, succ: {
- success()
- debugPrint("set profile success")
- }, fail: { (code, desc) in
- failed(desc ?? "")
- debugPrint("set profile failed.")
- })
- }
-
- /// IM 登录当前用户
- /// - Parameters:
- /// - success: 成功
- /// - failed: 失败
- @objc func IMLogin(userSig: String, success: @escaping ()->Void, failed: @escaping (_ error: String)->Void) {
- guard let userID = curUserModel?.userId else {
- failed("userID wrong")
- return
- }
- let user = String(userID)
- TUILogin.login(Int32(SDKAPPID), userID: user, userSig: userSig) {
- debugPrint("TUIlogin success")
- V2TIMManager.sharedInstance()?.getUsersInfo([userID], succ: { [weak self] (infos) in
- guard let `self` = self else { return }
- if let info = infos?.first {
- self.curUserModel?.avatar = info.faceURL ?? ""
- self.curUserModel?.name = info.nickName ?? ""
- success()
- }
- else {
- failed("")
- }
- }, fail: { (code, err) in
- failed(err ?? "")
- debugPrint("get user info failed, code:\(code), error: \(err ?? "nil")")
- })
- } fail: { code, errorDes in
- failed(errorDes ?? "")
- debugPrint("login failed, code:\(code), error: \(errorDes ?? "nil")")
- }
- }
-
- @objc func curUserID() -> String? {
- guard let userID = curUserModel?.userId else {
- return nil
- }
- return userID
- }
-
- @objc public func removeLoginCache() {
- let tokenKey = "com.lancoo.wiseCampusApp"
- UserDefaults.standard.set(nil, forKey: tokenKey)
- }
-
- @objc public func curUserSig() -> String {
- return curUserModel?.userSig ?? ""
- }
-
- @objc func synchronizUserInfo() {
- guard let userModel = curUserModel else {
- return
- }
- let userInfo = V2TIMUserFullInfo()
- userInfo.nickName = userModel.name
- userInfo.faceURL = userModel.avatar
- V2TIMManager.sharedInstance()?.setSelfInfo(userInfo, succ: {
- debugPrint("set profile success")
- }, fail: { (code, desc) in
- debugPrint("set profile failed.")
- })
- }
- }
|