83 lines
3.1 KiB
Swift
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("1400820672") ?? 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"])
|
|
}
|
|
}
|