====== 1V1实时音视频常见问题 ====== ---- **1、音视频通话有没有录制的服务?** 环信SDK在3.6.0以后的版本,提供了环信服务器端录制音视频的服务,在发起音视频通话时可以选择是否开启录制: [[http://docs-im.easemob.com/im/ios/basics/audiovideo#%E5%8F%91%E8%B5%B7%E5%AE%9E%E6%97%B6%E9%80%9A%E8%AF%9D | 发起实时通话]] 获取音视频通话录制文件文档:[[http://docs-im.easemob.com/im/server/basics/recordfiledownload#%E5%AE%9E%E6%97%B6%E9%9F%B3%E8%A7%86%E9%A2%91%E5%BD%95%E5%88%B6%E6%96%87%E4%BB%B6%E8%8E%B7%E5%8F%96​ | 获取录制文件]] ---- **2、iOS端如何实现聊天页面内显示音视频通话的时长?** 在此回调中做开始计时 //通话通道建立完成,用户A和用户B都会收到这个回调 - (void)callDidConnect:(EMCallSession *)aSession; 在此回调中结束计时,然后将通话时间用户通知发出去,然后在聊天页面内监听这个通知,插入一条通话时间的文本消息。 //用户A或用户B结束通话后,双方会收到该回调 - (void)callDidEnd:(EMCallSession *)aSession             reason:(EMCallEndReason)aReason              error:(EMError *)aError; 插入消息:[[http://docs-im.easemob.com/im/ios/basics/message#%E6%96%B9%E6%B3%95%E4%BA%8C | 插入消息]] ---- **3、用户离线怎么接收音视频通话?** 参考文档:[[http://docs-im.easemob.com/im/ios/basics/audiovideo#离线发推送 | 离线发推送]] ---- **4、iOS音视频通话如何添加提示音?** (1)在线时: 可以在监听音视频相关的代理方法里播放、停止播放本地音频文件(或者系统提示音)。[[http://docs-im.easemob.com/im/ios/basics/audiovideo#%E5%AE%9E%E6%97%B6%E9%80%9A%E8%AF%9D%E7%9B%B8%E5%85%B3%E7%9A%84%E5%9B%9E%E8%B0%83 | 实时通话相关的回调]] 代理方法都在 EMCallManagerDelegate.h​ 这个头文件内。比如在收到音视频通话请求的代理方法内播放提示音,在通话请求建立成功以及在通话结束时(自己挂断、对方挂断)时停止播放提示音。这个可以针对自己的场景实现相关播放和停止播放提示音的逻辑。 (2)离线时: 发送方在 - (void)callRemoteOffline:(NSString *)aRemoteName 代理方法里给接收方发送文本消息时,自定义推送提示音,参考文档:[[http://docs-im.easemob.com/im/ios/apns/content#自定义推送提示音|自定义推送提示音]] ---- ====== 多人音视频会议常见问题 ====== ---- **1、如何实现收到多人音视频会议邀请直接进入会议页面,不需要点击邀请消息再进入会议?** 以环信iOS demo中的代码为示例,demo是在点击会议邀请消息时在进入会议的,那么在接收消息的回调里面判断出来是会议邀请消息,直接根据消息中的会议内容加入会议,进入会议音视频页面就可以了。 聊天页面内的接收消息的回调方法: - (void)messagesDidReceive:(NSArray *)aMessages​{} demo中点击会议邀请消息加入会话的方法封装在截图中标注的方法内,这个看下内容方法如何实现的,可以自己在接收消息的回调方法里面自己去操作。 {{:faq:rtc:多人会议.jpg|}} ---- **2、怎么获取会议中的成员列表** 成员加入会议后,代理方法会携带上多人会议成员对象aMember,需要开发者解析然后自己存储、维护 //有人加入会议 - (void)memberDidJoin:(EMCallConference *)aConference member:(EMCallMember *)aMember { } ---- **3、怎么获取多人音视频会议成员个数?** [[EMClient sharedClient].conferenceManager getConference:@"9301839181" password:@"123" completion:^(EMCallConference *aCall, EMError *aError) { // 获取会议成员个数 NSInteger memCount = aCall.memberCount; }]; ---- **4、用户离开会议不知道是主动离开的还是用户离线后被动离开** 如果对方是主动离开会议的,给会议的成员发条cmd消息,标记是主动离开的 如果没有收到cmd消息而监听到有人离开,那就说明不是主动离开的 通过监听此回调即可: /*! * \~chinese * 有人离开会议 * * @param aConference 会议实例 * @param aMember 离开的用户 * * \~english * Someone leaved the conference * * @param aConference EMConference instance * @param aMember The leaved user */ - (void)memberDidLeave:(EMCallConference *)aConference member:(EMCallMember *)aMember; ---- ====== 美颜实现Demo ====== ---- 下面是基于环信 IM Demo 集成相芯美颜SDK的 Demo, 可以参考下。 因为证书目前是短期的,只有代码参考: https://github.com/Faceunity/FUEaseIMDemoDroid https://github.com/Faceunity/FUEMiOSDemo