![]() |
Podfile
ファイルと同一階層のディレクトリ下にTUIVoiceRoom
フォルダを作成し、Githubリポジトリ iOSディレクトリ下のTXAppBasic、Resources、Source、TUIVoiceRoom.podspecなどのファイルを、ご自身のプロジェクトで作成したTUIVoiceRoom
ディレクトリ下にコピーします。さらに、次のようにインポート動作を完了します:# pathはTXAppBasic.podspecのPodfileファイルに対する相対パスですpod 'TXAppBasic', :path => "TUIVoiceRoom/TXAppBasic/"# pathはTUIVoiceRoom.podspecのPodfileファイルに対する相対パスですpod 'TUIVoiceRoom', :path => "TUIVoiceRoom/", :subspecs => ["TRTC"]
pod install
を実行します。次をご参照ください:pod install
Privacy > Microphone Usage Description
を追加して、マイクの権限を申請してください。<key>NSMicrophoneUsageDescription</key><string>VoiceRoomAppはマイクへのアクセス権限が必要です。有効にした後にレコーディングしたビデオでなければ音声は出ません</string>
// 初期化let mTRTCVoiceRoom = TRTCVoiceRoom.shared()// ログインmTRTCVoiceRoom.login(sdkAppID: SDKAppID, userId: userId, userSig: userSig) { code, message inif code == 0 {//ログイン成功}}
// ボイスチャットルームパラメータの初期化let roomParam = VoiceRoomParam()roomParam.roomName = "ルーム名"roomParam.needRequest = false // リスナーのマイク・オンに対する管理者の同意の要否roomParam.coverUrl = "ルームカバー図のURL"roomParam.seatCount = 7 // ルームの座席数。ここでは計7席あり、管理者が1席を占め、残り6席がリスナーとなりますroomParam.seatInfoList = []// マイク情報の初期化for _ in 0..< param.seatCount {let seatInfo = VoiceRoomSeatInfo()param.seatInfoList.append(seatInfo)}// 管理者側でルームを作成mTRTCVoiceRoom.createRoom(roomID: yourRoomID, roomParam: roomParam) { (code, message) inif code == 0 {// 作成に成功}}
// 1.リスナーが呼び出して入室mTRTCVoiceRoom.enterRoom(roomID: roomID) { (code, message) in// 入室結果コールバックif code == 0 {// 入室に成功}}
// 1: リスナーが呼び出してマイク・オンlet seatIndex = 2; //マイクのindexmTRTCVoiceRoom.enterSeat(seatIndex: 2) { (code, message) inif code == 0 {// マイク・オン成功}}// 2. onSeatListChangeコールバックを受信し、マイクリストを更新します@Overridefunc onSeatListChange(seatInfoList: [VoiceRoomSeatInfo]) {// 更新したマイクリスト}
// 1: 管理者が呼び出して、視聴者が発言できるように招待let seatIndex = 2; //マイクのindexlet userId = "123"; //マイク・オンが必要なユーザーidmTRTCVoiceRoom.pickSeat(seatIndex: 1, userId: "123") { (code, message) inif code == 0 {}}// 2. onSeatListChangeコールバックを受信し、マイクリストを更新しますfunc onSeatListChange(seatInfoList: [VoiceRoomSeatInfo]) {// 更新したマイクリスト}
// リスナー側の視点// 1.リスナーが呼び出してマイク・オンを申請let seatIndex = "1"; //マイクのindexlet userId = "123"; //ユーザーidlet inviteId = mTRTCVoiceRoom.sendInvitation(cmd: "takeSeat", userId: ownerUserId, content: "1") { (code, message) in// 発信結果のコールバック}// 2.招待のリクエスト同意を受信し、正式にマイク・オンになりますfunc onInviteeAccepted(identifier: String, invitee: String) {if identifier == selfID {self.mTRTCVoiceRoom.enterSeat(seatIndex: ) { (code, message) in// マイク・オン結果のコールバック}}}// 管理者側の視点// 1.管理者がリクエストを受信しますfunc onReceiveNewInvitation(identifier: String, inviter: String, cmd: String, content: String) {if cmd == "takeSeat" {// 2.管理者がリスナーのリクエストに同意しますself.mTRTCVoiceRoom.acceptInvitation(identifier: identifier, callback: nil)}}
// 管理者側の視点// 1.管理者はsendInvitationを呼び出して、リスナー「123」をピックして2号マイクのマイク・オンをリクエストしますlet inviteId = self.mTRTCVoiceRoom.sendInvitation(cmd: "pickSeat", userId: ownerUserId, content: "2") { (code, message) in// 発信結果のコールバック}// 2.招待のリクエスト同意を受信し、正式にマイク・オンになりますfunc onInviteeAccepted(identifier: String, invitee: String) {if identifier == selfID {self.mTRTCVoiceRoom.pickSeat(seatIndex: ) { (code, message) in// マイク・オン結果のコールバック}}}// リスナー側の視点// 1.リスナーがリクエストを受信しますfunc onReceiveNewInvitation(identifier: String, inviter: String, cmd: String, content: String) {if cmd == "pickSeat" {// 2.リスナーが管理者のリクエストに同意しますself.mTRTCVoiceRoom.acceptInvitation(identifier: identifier, callback: nil)}}
// 発信側:テキストメッセージの発信self.mTRTCVoiceRoom.sendRoomTextMsg(message: message) { (code, message) in}// 受信側:テキストメッセージのモニタリングfunc onRecvRoomTextMsg(message: String, userInfo: VoiceRoomUserInfo) {// 受信したmessage情報の処理方法}
// 例:発信側:カスタマイズCmdによって、弾幕と「いいね」情報を区分することができます// eg:「CMD_DANMU」は弾幕コメントを表し、「CMD_LIKE」は「いいね」情報を表しますself.mTRTCVoiceRoom.sendRoomCustomMsg(cmd: "CMD_DANMU", message: "hello world", callback: nil)self.mTRTCVoiceRoom.sendRoomCustomMsg(cmd: "CMD_LIKE", message: "", callback: nil)// 受信側:カスタムメッセージのモニタリングfunc onRecvRoomCustomMsg(cmd: String, message: String, userInfo: VoiceRoomUserInfo) {if cmd == "CMD_DANMU" {// 弾幕コメントの受信}if cmd == "CMD_LIKE" {// 「いいね」情報の受信}}
この記事はお役に立ちましたか?