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: алдааг тайлбарласан мессеж