- Android
- iOS
- JavaScript
SDK 中通过通话实体 ICallSession
对音视频通话进行操作。呼出通话时,开发者通过 startSingleCall
或者 startMultiCall
方法的返回值获取通话实体。接听通话时,开发者通过 onCallReceive
回调获取通话实体。开发者还可以使用下面方法获取指定 callId 对应的通话实体。
ICallSession callSession = JIM.getInstance().getCallManager().getCallSession(callId);
开发者持有通话实体之后,可以方便的获取通话相关的属性,并对其进行接听、挂断等操作。
// 接听来电
void accept();
// 挂断来电
void hangup();
// 开启摄像头
void enableCamera(boolean isEnable);
// 设置用户的视频 view
void setVideoView(String userId, View view);
// 开始预览
void startPreview(View view);
// 设置麦克风静音
void muteMicrophone(boolean isMute);
// 设置扬声器静音
void muteSpeaker(boolean isMute);
// 设置外放声音
// true 使用外放扬声器;false 使用听筒
void setSpeakerEnable(boolean isEnable);
// 切换摄像头,默认 true 使用前置摄像头
void useFrontCamera(boolean isEnable);
// 呼叫用户加入通话(isMultiCall 为 false 时不支持该功能)
void inviteUsers(List<String> userIdList);
// 通话 id
String getCallId();
// 是否多人通话,false 表示一对一通话
boolean isMultiCall();
// 媒体类型(语音/视频)
CallConst.CallMediaType getMediaType();
// 通话状态
CallConst.CallStatus getCallStatus();
// 呼叫开始时间(多人会话中当前用户被呼叫的时间,不一定等于整个通话开始的时间)
long getStartTime();
// 当前用户加入通话的时间
long getConnectTime();
// 当前用户结束通话的时间
long getFinishTime();
// 通话的发起人 id
String getOwner();
// 邀请当前用户加入通话的用户 id
String getInviter();
// 通话结束原因
CallConst.CallFinishReason getFinishReason();
// 通话参与者(除当前用户外的其他参与者)
List<CallMember> getMembers();
// 当前用户
CallMember getCurrentCallMember();
// 扩展字段
String getExtra();
SDK 中通过通话实体 id<JCallSession>
对音视频通话进行操作。呼出通话时,开发者通过 startSingleCall:mediaType:delegate:
或者 startMultiCall:mediaType:delegate:
方法的返回值获取通话实体。接听通话时,用户通过 callDidReceive:
回调获取通话实体。开发者还可以使用下面方法获取指定 callId 对应的通话实体。
id<JCallSession> callSession = [JIM.shared.callManager getCallSession:@"callId1"];
开发者持有通话实体之后,可以方便的获取通话相关的属性,并对其进行接听、挂断等操作。
@protocol JCallSession <NSObject>
/// 通话 id
@property (nonatomic, copy) NSString *callId;
/// 是否多人通话,NO 表示一对一通话
@property (nonatomic, assign) BOOL isMultiCall;
/// 媒体类型(语音/视频)
@property (nonatomic, assign) JCallMediaType mediaType;
/// 通话状态
@property (nonatomic, assign) JCallStatus callStatus;
/// 呼叫开始时间(多人会话中当前用户被呼叫的时间,不一定等于整个通话开始的时间)
@property (nonatomic, assign) long long startTime;
/// 当前用户加入通话的时间
@property (nonatomic, assign) long long connectTime;
/// 当前用户结束通话的时间
@property (nonatomic, assign) long long finishTime;
/// 通话的发起人 id
@property (nonatomic, copy) NSString *owner;
/// 邀请当前用户加入通话的用户 id
@property (nonatomic, copy) NSString *inviter;
/// 通话结束原因
@property (nonatomic, assign) JCallFinishReason finishReason;
/// 通话参与者(除当前用户外的其他参与者)
@property (nonatomic, copy, readonly) NSArray <JCallMember *> *members;
/// 当前用户
@property (nonatomic, strong, readonly) JCallMember *currentCallMember;
/// 扩展字段
@property (nonatomic, copy) NSString *extra;
- (void)addDelegate:(id<JCallSessionDelegate>)delegate;
/// 接听来电
- (void)accept;
/// 挂断电话
- (void)hangup;
/// 开启摄像头
/// - Parameter isEnable: 是否开启
- (void)enableCamera:(BOOL)isEnable;
/// 设置用户的视频 view
/// - Parameters:
/// - view: 视频 view
/// - userId: 用户 id(当前用户或者会话中的其他用户)
- (void)setVideoView:(UIView *)view
forUserId:(NSString *)userId;
/// 开始预览
/// - Parameter view: 预览的视频 view
- (void)startPreview:(UIView *)view;
/// 设置麦克风静音
/// - Parameter isMute: 是否静音
- (void)muteMicrophone:(BOOL)isMute;
/// 设置扬声器静音
/// - Parameter isMute: 是否静音
- (void)muteSpeaker:(BOOL)isMute;
/// 设置外放声音
/// - Parameter isEnable: YES 使用外放扬声器;NO 使用听筒
- (void)setSpeakerEnable:(BOOL)isEnable;
/// 切换摄像头,默认 YES 使用前置摄像头
/// - Parameter isEnable: YES 使用前置摄像头;NO 使用后置摄像头
- (void)useFrontCamera:(BOOL)isEnable;
/// 呼叫用户加入通话(isMultiCall 为 NO 时不支持该功能)
/// - Parameter userIdList: 呼叫的用户 id 列表
- (void)inviteUsers:(NSArray <NSString *> *)userIdList;
暂未支持