Files
yingmeng-ios-switf/yinmeng-ios/Modules/Room/Tool/YinRoomTRTCManager.swift
2024-03-23 20:47:19 +08:00

83 lines
3.1 KiB
Swift

//
// YinRoomTRTCManager.swift
// yinmeng-ios
//
// Created by yinmeng on 2024/3/22.
//
import UIKit
class YinRoomTRTCManager: NSObject {
func initRTRC(){
let cloud = TRTCCloud.sharedInstance()
let params = TRTCAudioVolumeEvaluateParams()
params.interval = 900
cloud.enableAudioVolumeEvaluation(true, with: params)
TRTCCloud.setConsoleEnabled(false)
TRTCCloud.sharedInstance().addDelegate(self)
}
var roomData:RoomDataModel?
func setTRTC(){
if let roomId = self.roomData?.roomId,let uid = self.roomData?.uid{
let cloud = TRTCCloud.sharedInstance()
let curRoomId = (Int(roomId) ?? 0) > INT_MAX ? uid : roomId
let params = TRTCAudioVolumeEvaluateParams()
params.interval = 900
cloud.enableAudioVolumeEvaluation(true, with: params)
let yinParams = TRTCParams()
if AuthViewModel.authVM.appId.isEmpty{
yinParams.sdkAppId = UInt32("1400798783") ?? 0
}else{
yinParams.sdkAppId = UInt32(AuthViewModel.authVM.appId) ?? 0
}
yinParams.roomId = UInt32(curRoomId) ?? 0
let uid = "\(AuthManager.userUid)"
yinParams.userId = uid
let sign = self.roomData?.trtcSig ?? ""
yinParams.userSig = sign
yinParams.role = TRTCRoleType.audience
TRTCCloud.sharedInstance().enterRoom(yinParams, appScene: TRTCAppScene.LIVE)
TRTCCloud.sharedInstance().muteAllRemoteAudio(false)
TRTCCloud.sharedInstance().muteLocalAudio(false)
RoomVCViewModel.roomVM.isMute = false
}
}
func muteLocalAudio(mute:Bool){
TRTCCloud.sharedInstance().muteLocalAudio(mute)
}
func setBroadcast(isChange:Bool){
TRTCCloud.sharedInstance().switch(isChange ? .anchor : .audience)
if (isChange){
let text = "{\"api\":\"setAudioQualityEx\",\"params\":{\"sampleRate\":48000,\"channel\":2,\"bitrate\":192,\"encodeMode\":1,\"systemVolumeType\":1}}"
TRTCCloud.sharedInstance().callExperimentalAPI(text)
let aecText = "{\"api\":\"enableAudioAEC\",\"params\":{\"enable\":1,\"level\":100}}"
TRTCCloud.sharedInstance().callExperimentalAPI(aecText)
TRTCCloud.sharedInstance().startLocalAudio(.music)
}else{
TRTCCloud.sharedInstance().stopLocalAudio()
}
}
func exitRoom(){
TRTCCloud.sharedInstance().exitRoom()
TRTCCloud.sharedInstance().muteAllRemoteAudio(false)
TRTCCloud.sharedInstance().muteLocalAudio(false)
}
func destroySharedIntance(){
TRTCCloud.destroySharedIntance()
}
}
extension YinRoomTRTCManager:TRTCCloudDelegate{
func onUserVoiceVolume(_ userVolumes: [TRTCVolumeInfo], totalVolume: Int) {
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "kReceiveUserVoiceVolume") , object: nil, userInfo: ["userVolumes":userVolumes,"totalVolume":totalVolume,"type":"trtc"])
}
}