Skip to main content

general

  • SDK-г ашигласан жишээ код: Доор байрлах Github repository-н qrtc_ios_client/ui/TRTCMeetingMainViewController.swift

Gitlab --> https://gitlab.com/callpromn/platform-rtc/PlatformRTC-iOS

Шаардлагатай сангууд суулгах

1. QRTCSDK, QRTCRoomClient folder-уудыг Libs folder-т байршуулах
2. Podfile дотор доорх сангуудыг нэмэх
3. Pod install

Зарим сангийн шинэ хувилбарыг (version) дэмжихгүй байх магадлалтай тул доорх хувилбарын дагуу суулгана уу

podfile-д нэмэх:


pod 'Starscream', '~> 3.0.2'
pod 'SwiftyJSON', '~> 4.0'
pod 'HydraAsync'
pod 'RxSwift', '~> 5'
pod 'RxCocoa', '~> 5'
pod 'SnapKit'
pod 'Toast-Swift'
pod 'Material'
pod 'SDWebImage'
pod 'Alamofire', '~> 5.2'
pod 'QRTCSDK', :path => './Libs/QRTCSDK'
pod 'QRTCRoomClient', :path => './Libs/QRTCRoomClient'
post_install do |installer|
installer.generated_projects.each do |proj|
proj.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
end
end
end

Sdk-г үүсгэж, ашиглах

Анхаарах зүйлс
1. QRTCRoomClient framework-г sdk ашиглах код дотроо import хийн оруулах ( Sdk-г ашиглах Activity дотор )

  import QRTCRoomClient
2. RoomListener class-г implement хийх ( QRTCRoomClient framework-г import хийх )

  • listener-н method-уудыг ашиглах гэж буй class дотроо override хийж ашиглана.

Жишээ нь:


class TRTCMeetingMainViewController: UIViewController, RoomListener {
func onEnterRoom(result: Int64, reason: String?){
...
}
}
3. RoomClient100 class-н sharedInstance method-г ашиглан RoomClient100-н шинэ объект үүсгэнэ

  typealias RtcSdk = RoomClient100 // Class-н нэрийг ашиглахад хялбар нэрээр өөрчилж болно.
  var clientSDK: RtcSdk = RtcSdk.sharedInstance()
4. Өрөөнд нэвтрэхээс өмнө бичлэгний encode тохируулах.

Sdk-г идэвхгүй болгох

clientSDK.destroySharedInstance()

Өрөөнд нэвтрэх

clientSDK.enterRoom(params: QRTCParams,scene: QRTCScene)
  • params: serverUrl, sdkAppId, userSig, userId, userName, roomId, xConferenceToken, acceptLanguage зэрэг хувьсагч агуулсан QRTCParams төрлийн объект

  • serverUrl: String - video болон audio-г дамжуулах server-н url ( Тестийн сервер: wss://platform-test.callpro.mn/ )

  • sdkAppId: String - ( RTC-dash-с үүсгэж өгсөн appId )

  • userId: String - Өрөөнд нэвтрэх хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • userName: String - Хурлын өрөөнд бусад хэрэглэгчдэд харагдах хэрэглэгчийн нэр

  • roomId: String - RTC-dash-с үүсгэж өгсөн appId дээр хурлын нэрийг залгасан ID ( appId_roomName )

  • xConferenceToken: String - Өрөөнд нэвтрэхэд ашиглагдах Token. Back-end дээр үүсгэнэ. (https://www.npmjs.com/package/rtc-token)

  • acceptLanguage, userSig: String - Одоогоор ашиглагдахгүй байгаа тул хувьсагчийн утгыг хоосон дамжуулах ( "" )


public enum QRTCScene {
case VideoCall

case AudioCall

case MCUCall
}

Өрөөнөөс гарах

clientSDK.exitRoom()

success: Өрөөнөөс амжилттай гарсан эсэх ( Bool )

info: string


clientSDK.exitRoom(){ (success,info) in
if success {
...
} else {
...
}
}

Өрөөнд байгаа хэрэглэгчид рүү msg илгээх

clientSDK.sendCustomCmdMsg(cmdId: Int, data: String)
  • cmdId: 999 утгатай үед "onRecvRoomTextMsg" listener-т очно. Бусад үед "onRecvRoomCustomMsg" listener-т очно.

  • data: Бусад хэрэглэгчид рүү илгээх мессеж

Listener

Өрөөнд амжилттай нэвтрэх үед

onEnterRoom( result: Int64, reason: String? )

Өрөөнөөс гарах үед

onExitRoom( reason:Int )
  • reason: өрөөнөөс гарсан шалтгааныг илэрхийлнэ:

  • 1: Өрөөнөөс хөөгдөх үед

  • 2: Хурлын өрөөг үүсгэсэн хүн хурлыг дуусгасан үед

  • 3: Хурлын өрөөг серверээc хаасан үед

Бусад хэрэглэгч өрөөнд нэвтрэх үед

onRemoteUserEnterRoom(userId: String, userInfo: QRTCRoomClient.QRTCUserInfo)
  • userId: Өрөөнд нэвтэрсэн хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • userInfo: Хэрэглэгчийн мэдээллийг агуулсан QRTCRoomClient.QRTCUserInfo төрлийн объект


public struct QRTCUserInfo {
public var displayName: String

public var avatarUrl: String

public var enterTime: Int64
}

Бусад хэрэглэгч өрөөнөөс гарах үед

onRemoteUserLeaveRoom(userId: String, reason: Int)
  • userId: Өрөөнөөс гарсан хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • reason: Гарсан шалтгааныг илэрхийлэх тоо

Хэрэглэгчдэд харагдах нэр өөрчлөгдөх үед

onDisplayNameChanged(userId: String,displayName: String)
  • userId: Дэлгэцний нэр нь солигдсон хэрэглэгчийн Id ( Өрөөний Id + "_" + тухайн app дээрх хэрэглэгчийн ID roomId_userId )

  • displayName: Хурлын өрөөнд бусад хэрэглэгчдэд харагдах тухайн хэрэглэгчийн өөрчлөгдсөн нэр

Серверийн холбоосын хугацаа дуусах үед

onConnectionTimeout()

Серверийн холбоос салах үед

onConnectionLost()

Сервертэй дахин холбогдох хүсэлт илгээх үед

onTryToReconnect()

Сервертэй дахин холбогдох үед

onConnectionRecovery()

Бусад хэрэглэгчээс мессеж ирэх үед

onRecvRoomTextMsg(peerId: String, message: String)
  • peerId: Хэрэглэгчийн ID

  • message: Бусад хэрэглэгчээс ирсэн мессеж

Бусад хэрэглэгчээс тусгай кодтой мессеж ирэх үед

onRecvRoomCustomMsg(cmdId: Int, peerId: String, message: String)
  • cmdId: Бусад хэрэглэгчээс илгээсэн тусгай код

  • peerId: Хэрэглэгчийн ID

  • message: Бусад хэрэглэгчээс ирсэн мессеж

Хэрэглэгчдийн сүлжээний чанар өөрчлөгдөх үед

onNetworkQuality( localQuality: QRTCRoomClient.QRTCQuality, remoteQuality: QRTCRoomClient.QRTCQuality )
  • localQuality: Өөрийн сүлжээний чанарыг илэрхийлсэн тоо (QRTCRoomClient.QRTCQuality)

  • remoteQuality: Бусад хэрэглэгчийн сүлжээний чанарыг илэрхийлсэн тоо (QRTCCloudDef.QRTCQuality)


  public enum QRTCQuality {
case QRTCQUALITY_UNKNOWN // 0
case QRTCQUALITY_Excellent // 1
case QRTCQUALITY_Good // 2
case QRTCQUALITY_Poor // 3
case QRTCQUALITY_Bad // 4
case QRTCQUALITY_Vbad // 5
case QRTCQUALITY_Down // 6
}

Анхааруулсан мессеж ирэх үед

onWarningMsg( warningMsg: String )
  • warningMsg: анхааруулсан мессеж

Алдаа гарах үед

onErrorMsg( errorCode: Int, errorMsg: String )
  • errorCode: алдааны утгыг илэрхийлсэн тоо

  • errorMsg: алдааг тайлбарласан мессеж