您可以阅读本文,了解1对1语音通话iOS端的集成操作。

前提条件

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

类别 说明
iPhone设备 支持iPhone5及以上。
系统版本 支持iOS 8.0及以上。
CPU架构 支持真机架构armv7+arm64,不支持模拟器i386、x86架构。
Xcode版本 支持Xcode9.0及以上。
其他 不支持Bitcode,不支持屏幕旋转。
说明 您需要持有Apple开发证书或个人账号。

Demo运行指引

说明 Demo源码中已经集成AliRTC SDK(版本:1.17)。SDK集成方式通过CocoaPods集成。
  1. 下载Demo
  2. 双击打开demo目录下的AlivcVoiceCallSoloClient.xcworkspace文件。
    打开Demo
  3. 选择运行Target为AlivcVoiceCallSoloClient。
    AlivcVoiceCallSoloClient
  4. 修改Bundle Identifier和开发者证书。
    修改证书证书
  5. 单击build and run按钮编译。
    bulid and run

快速跑通Demo

为了快速在自己的demo中调用服务端的接口,需要您在本地运行服务端的代码,在AliBaseHttpClient.m中填入您的服务端地址。

如:https://<域名>/1v1-audio。

输入域名

Demo源码解析

  • 项目结构说明。
    说明 Demo是以Cocoapods Lib的方式集成到项目中的。
    • RTC把开发的业务代码封装到名称为AlivcVoiceCallSolo的库当中,这样AlivcVoiceCallSolo就可以像一个本地的第三方库一样。可以随便移植到其他项目中,只需在Podfile中指定AlivcVoiceCallSolo库的路径即可。如下所示:

          pod 'AlivcVoiceCallSolo', :path => './AlivcVoiceCallSolo'
      
          ##   pod 'AlivcVoiceCallSolo'  说明项目依赖AlivcVoiceCallSolo库
          ##   path => './AlivcVoiceCallSolo'  指明AlivcVoiceCallSolo库的位置(相对于Podfile)

      名词解释如下:

      • pod:表示工程依赖AlivcVoiceCallSolo库。
      • path:表示AlivcVoiceCallSolo库的路径(相对podfile文件)。
      路径
    • AlivcVoiceCallSolo组件库目录说明,如下所示:
      文件名 说明
      AlivcVoiceCallSolo.podspec 组件的描述文件。
      AlivcVoiceCallSolo.bundle 存放资源的bundle。
      AlivcVoiceCallChannelViewController 首页。
      AlivcVoiceCallChattingViewController 聊天页。
      AlivcDismissTransition 转场动画。
      AlivcPanInteractiveTransition
      AlivcPresentTransition
      AlivcVoiceCallSettingViewController 设置页。
      AlivcVideoCallUserAuthrization 工具类。
      NSBundle+AlivcVoiceCallSolo
      UIViewController+Alert
      AliBaseHttpClient 网络请求。
      AliRequestList
      目录
  • 功能实现。
    • 创建并加入频道。
        //实例化AliRtcEngine并设置代理。
         _engine = [AliRtcEngine sharedInstance:self extras:@""];
         //获取授权信息。
         //AliRtcAuthInfo:各项参数均需要客户AppServer(客户的server端)通过OpenAPI来获取,然后AppServer下发至客户端,客户端将各项参数赋值后,即可joinChannel。
         AuthInfo *authInfo = "从server端获取" 
        [_engine  joinChannel:authInfo name:name onResult:^(NSInteger errCode) {
                          //加入频道回调处理
                          if (errCode == 0) {
                              //加入房间成功
                          } else {
                           //加入房间失败
                          }
                      }];
    • 离开频道。
      //离开频道。
      [self.engine leaveChannel];
      //销毁SDK实例。
      [AliRtcEngine destroy];
    • 播放伴奏。
      NSString *path = “文件的路径”
      NSString *url = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
      //预加载音效文件。
      [self.engine preloadAudioEffectWithSoundId:soundId filePath:url];
      //播放音效。
      [self.engine playAudioEffectWithSoundId:soundId filePath:url cycles:1 publish:YES];   
    • 暂停伴奏。
      [self.engine pauseAudioEffectWithSoundId:soundId];           
    • 停止伴奏。
      [self.engine stopAudioEffectWithSoundId:soundId];         
    • 恢复播放伴奏。
      [self.engine resumeAudioEffectWithSoundId:soundId];       
    • 静音模式。
      [self.engine muteLocalMic:YES];         
    • 取消静音模式。
      [self.engine muteLocalMic:NO];       
    • 开启扬声器。
      [self.engine enableSpeakerphone:YES];               
    • 关闭扬声器。
      [self.engine enableSpeakerphone:NO];