您可以阅读本文,了解iOS端语音聊天室的集成操作。

Demo运行指引

  1. 前提条件

    开发前的环境要求如下表所示,详情请参见使用限制

    类别 说明
    iPhone设备 支持iPhone5及以上。
    系统版本 支持iOS 8.0及以上。
    CPU架构 支持真机架构armv7+arm64,不支持模拟器i386、x86架构。
    Xcode版本 支持Xcode9.0及以上。
    其他 不支持Bitcode,不支持屏幕旋转。
    说明 您需要持有Apple开发证书或个人账号。
  2. 获取Demo源码
    如果您需要语音聊天室开源示例项目,请添加钉钉群获取: 顶顶群码
  3. 运行项目
    1. 双击打开demo目录下的RTCSolution.xcworkspace。RTCSolution.xcworkspace
    2. 选择运行Target为LectureHall。LectureHall
    3. 修改Bundle Identifier和开发者证书。Bundle Identifier开发者证书
    4. 点击build and run按钮进行编译和运行。build and run

快速跑通Demo

为了快速在Demo中调用服务端的接口,需要您在本地运行服务端的代码,在AppConfig.h文件中填入您的服务端地址。

AppConfig.h

Demo源码解析

  1. 项目结构说明

    Demo是以cocoapods本地库的方式集成到项目中的。

    为了方便把语聊房的代码移植到您的项目中,我们把代码封装为名称为RTCAudioLiveRoom的本地库当中。

    您只需在Podfile中指定RTCAudioLiveRoom.podspec的路径即可。
    #基础组件 :path 的路径为podfile 和 RTCCommon.podspec 的相对路径
    pod 'RTCCommon', :path => 'RTCCommon/'
     
    #基础UI组件 :path 的路径为podfile 和 RTCCommonView.podspec 的相对路径 
    pod 'RTCCommonView', :path => 'RTCCommonView/'
     
    #语聊房 :path 的路径为podfile 和 RTCAudioLiveRoom.podspec 的相对路径
    pod 'RTCAudioLiveRoom', :path => 'RTCAudioLiveRoom/'
    路径
  2. 接口与回调

    接口

    API 描述
    sharedInstance 获取单例对象
    destroySharedInstance 销毁实例对象
    login 加入频道
    logout 退出频道
    enterSeat 上麦
    leavelSeat 下麦
    renotifySeatsInfo 重新通过回调通知座位信息
    muteLocalMic 静音/取消静音
    muteAllRemoteAudioPlaying 关闭/开启远端声音
    startAudioAccompanyWithFile 播放背景音乐
    stopAudioAccompany 停止播放背景音乐
    setAudioAccompanyVolume 设置伴奏音量
    playEffectSoundtWithSoundId 播放音效
    stopAudioEffectWithSoundId 停止播放音效
    setAudioEffectPlayoutVolumeWithSoundId 设置音效的音量
    enableEarBack 设置耳返
    setAudioEffectReverbMode 设置混响模式
    setAudioEffectVoiceChangerMode 设置音效混响模式

    事件回调

    API 描述
    onEnterSeat 远端用户上麦通知
    onLeaveSeat 远端用户下线通知
    onRoomDestory 房间被销毁通知
    onSeatVolumeChanged 音量变化通知
    onSeatMutedChanged 静音/取消静音变化通知

    接口示例

    • 获取单例对象
      // 单例模式 初始化RTCAudioliveRoom
      RTCAudioliveRoom *manager = [RTCAudioliveRoom sharedInstance];
      //设置代理对象
      manager.delegate = vc
    • 销毁实例对象
      [self.manager destroySharedInstance];
    • 加入频道
      /// 加入频道
      /// @param channelId   频道名称
      /// @param name    任意用于显示的用户名称。不是User ID
      /// @param role   角色
      /// @param handler   回调
      
       [self.manager login:@"频道名称"
                         name:@"用户昵称"
                         role:@"角色"
                     complete:^(AliRtcAuthInfo * _Nonnull authInfo, NSInteger errorCode) {
              if (authInfo)
              {
                  //加入房间成功
                  // ....
                  return;
              }
              //加入房间失败
          }];
    • 退出频道
      [self.manager logout];
    • 上麦
      [self.manager enterSeat];
    • 下麦
      [self.manager leavelSeat];
    • 重新通过回调通知座位信息
      [self.manager renotifySeatsInfo];
    • 静音/取消静音
      //静音
      [self.manager muteLocalMic:YES];
      
      //取消静音
      [self.manager muteLocalMic:NO];
    • 关闭/开启远端声音
      //关闭远端声音
      [self.manager muteAllRemoteAudioPlaying:YES];
      
      //开启远端声音
      [self.manager muteAllRemoteAudioPlaying:NO];
    • 播放背景音乐
      /// 播放背景音乐
      /// @param filePath 文件路径
      /// @param publish 是否推送远端
      
      [self.manager startAudioAccompanyWithFile:@"文件url" publish:YES];
    • 停止播放背景音乐
      [self.manager stopAudioAccompany];
    • 设置伴奏音量
      /// 设置背景音乐音量
      /// @param volume 音量 0~100
      
      [self.manager setAudioAccompanyVolume:100];
    • 播放音效
      /// 播放音效
      /// @param soundId 音效id
      /// @param filePath 资源路径
      /// @param publish 是否推送远端
      
      [self.manager playEffectSoundtWithSoundId:111
                                    filePath:@"文件url"
                                    publish:YES];
    • 停止播放音效
      [self.manager stopAudioEffectWithSoundId:111];
    • 设置音效的音量
      [self.manager setAudioEffectPlayoutVolumeWithSoundId:111 volume:100];
    • 设置耳返
      //开启耳返
      [self.manager enableEarBack:YES]; 
      //关闭耳返
      [self.manager enableEarBack:NO];
    • 设置混响模式
      [self.manager setAudioEffectReverbMode:AliRtcAudioEffectReverb_Off];
    • 设置音效混响模式
      [self.manager setAudioEffectVoiceChangerMode:AliRtcAudioEffectvVoiceChanger_OFF];

    回调示例

    • 远端用户上麦通知
      /// 远端用户上麦通知
      /// @param seat 麦序
      - (void)onEnterSeat:(SeatInfo *)seat;
    • 远端用户下线通知
      /// 远端用户下线通知
      /// @param seat 麦序
      - (void)onLeaveSeat:(SeatInfo *)seat;
    • 房间被销毁通知
      /// 房间被销毁通知
      - (void)onRoomDestory;
    • 音量变化通知
      /// 音量变化通知
      /// @param seatIndex 麦序
      /// @param isSpeaking 是否在说话
      - (void)onSeatVolumeChanged:(NSInteger)seatIndex isSpeaking:(BOOL)isSpeaking;
    • 静音/取消静音变化通知
      /// 静音/取消静音变化通知
      /// @param seatIndex 麦序
      /// @param mute 是否静音
      - (void)onSeatMutedChanged:(NSInteger)seatIndex mute:(BOOL)mute;