====== 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