提交
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
//
|
||||
// ServiceInitializer.swift
|
||||
// TUILiveKit
|
||||
//
|
||||
// Created by WesleyLei on 2023/10/19.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import TUICore
|
||||
import RTCRoomEngine
|
||||
|
||||
extension NSObject {
|
||||
@objc class func liveKitExtensionLoad() {
|
||||
ServiceInitializer.shared.registerObserver()
|
||||
}
|
||||
}
|
||||
|
||||
class ServiceInitializer {
|
||||
|
||||
private var isLoginEngine: Bool = false
|
||||
static let shared = ServiceInitializer()
|
||||
private var invitationManager: TUIConferenceInvitationManager?
|
||||
private var invitationObserver: InvitationObserverService?
|
||||
|
||||
private init() {
|
||||
}
|
||||
|
||||
func registerObserver() {
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess(_:)),
|
||||
name: NSNotification.Name(rawValue: NSNotification.Name.TUILogoutSuccess.rawValue),
|
||||
object: nil)
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess(_:)),
|
||||
name: NSNotification.Name(rawValue: NSNotification.Name.TUILoginSuccess.rawValue),
|
||||
object: nil)
|
||||
}
|
||||
|
||||
@objc private func logoutSuccess(_ notification: Notification) {
|
||||
logout(onSuccess: nil, onError: nil)
|
||||
removeInvitationObserver()
|
||||
}
|
||||
|
||||
@objc private func loginSuccess(_ notification: Notification) {
|
||||
login(onSuccess: nil, onError: nil)
|
||||
addInvitationObserver()
|
||||
}
|
||||
|
||||
private func addInvitationObserver() {
|
||||
invitationObserver = InvitationObserverService.shared
|
||||
invitationManager = TUIRoomEngine.sharedInstance().getExtension(extensionType: .conferenceInvitationManager) as? TUIConferenceInvitationManager
|
||||
guard let invitationObserver = invitationObserver else { return }
|
||||
invitationManager?.addObserver(invitationObserver)
|
||||
}
|
||||
|
||||
private func removeInvitationObserver() {
|
||||
guard let invitationObserver = invitationObserver else { return }
|
||||
invitationManager?.removeObserver(invitationObserver)
|
||||
}
|
||||
|
||||
func login(onSuccess: TUISuccessBlock?, onError: TUIErrorBlock?) {
|
||||
if isLoginEngine {
|
||||
onSuccess?()
|
||||
} else {
|
||||
let sdkAppId = Int(TUILogin.getSdkAppID())
|
||||
let userId = TUILogin.getUserID() ?? ""
|
||||
let userSig = TUILogin.getUserSig() ?? ""
|
||||
ServiceInitializer.login(sdkAppId: sdkAppId, userId: userId, userSig: userSig) { [weak self] in
|
||||
guard let self = self else { return }
|
||||
self.isLoginEngine = true
|
||||
onSuccess?()
|
||||
} onError: { code, message in
|
||||
onError?(code, message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func logout(onSuccess: TUISuccessBlock?, onError: TUIErrorBlock?) {
|
||||
if isLoginEngine {
|
||||
ServiceInitializer.logout {
|
||||
onSuccess?()
|
||||
} onError: { code, message in
|
||||
onError?(code, message)
|
||||
}
|
||||
self.isLoginEngine = false
|
||||
} else {
|
||||
onSuccess?()
|
||||
}
|
||||
}
|
||||
|
||||
deinit {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
extension ServiceInitializer {
|
||||
static func login(sdkAppId:Int,userId:String,userSig:String,onSuccess: @escaping TUISuccessBlock, onError: @escaping TUIErrorBlock) {
|
||||
TUIRoomEngine.login(sdkAppId: sdkAppId, userId: userId, userSig: userSig) {
|
||||
onSuccess()
|
||||
} onError: { code, message in
|
||||
onError(code, message)
|
||||
}
|
||||
}
|
||||
|
||||
static func logout(onSuccess: @escaping TUISuccessBlock, onError: @escaping TUIErrorBlock) {
|
||||
TUIRoomEngine.logout {
|
||||
onSuccess()
|
||||
} onError: { code, message in
|
||||
onError(code, message)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user