通话状态回调

如果您实现并设置了 RCCallSessionDelegate,当通话状态发生变化的时候,会回调相关接口。

您可以在 startCall 的时候传入或者手动设置通话状态监听。

    // RCCallClient Class

    /*!
     发起一个通话

     @param conversationType 会话类型
     @param targetId         目标会话ID
     @param userIdList       邀请的用户ID列表
     @param type             发起的通话媒体类型
     @param delegate         通话监听
     @param extra            附件信息

     @return 呼出的通话实体
     */
    - (RCCallSession *)startCall:(RCConversationType)conversationType
                        targetId:(NSString *)targetId
                              to:(NSArray *)userIdList
                       mediaType:(RCCallMediaType)type
                 sessionDelegate:(id<RCCallSessionDelegate>)delegate
                           extra:(NSString *)extra;


    // RCCallSession Class

    /*!
     设置通话状态变化的监听器

     @param delegate 通话状态变化的监听器
     */
    - (void)setDelegate:(id<RCCallSessionDelegate>)delegate;

当通话状态发生变化的时候,如接通、结束、对方振铃、有人加入通话、有人挂断、发生警告等都会进行回调。

// RCCallSession Class

/*!
 通话状态变化的监听器
 */
@protocol RCCallSessionDelegate <NSObject>

@optional

/*!
 通话已接通
 */
- (void)callDidConnect;

/*!
 通话已结束
 */
- (void)callDidDisconnect;

/*!
 对端用户正在振铃

 @param userId 用户ID
 */
- (void)remoteUserDidRing:(NSString *)userId;

/*!
 有用户被邀请加入通话

 @param userId    被邀请的用户ID
 @param mediaType 希望被邀请者使用的媒体类型
 */
- (void)remoteUserDidInvite:(NSString *)userId
                  mediaType:(RCCallMediaType)mediaType;

/*!
 对端用户加入了通话

 @param userId    用户ID
 @param mediaType 用户的媒体类型
 */
- (void)remoteUserDidJoin:(NSString *)userId
                mediaType:(RCCallMediaType)mediaType;

/*!
 对端用户切换了媒体类型

 @param userId    用户ID
 @param mediaType 切换至的媒体类型
 */
- (void)remoteUserDidChangeMediaType:(NSString *)userId
                           mediaType:(RCCallMediaType)mediaType;

/*!
 对端用户开启或管理了摄像头的状态

 @param userId    用户ID
 @param muted     是否关闭摄像头
 */
- (void)remoteUserDidDisableCamera:(BOOL)disabled
                            byUser:(NSString *)userId;

/*!
 对端用户挂断

 @param userId 用户ID
 @param reason 挂断的原因
 */
- (void)remoteUserDidLeft:(NSString *)userId
                   reason:(RCCallDisconnectReason)reason;

/*!
 通话过程中的错误回调

 @param error 错误码

 @warning 这个接口回调的错误码主要是为了提供必要的log以及提示用户,如果是不可恢复的错误,SDK会挂断电话并回调callDidDisconnect,App可以在callDidDisconnect中统一处理通话结束的逻辑。
 */
- (void)errorDidOccur:(RCCallErrorCode)error;

@end

/*!
白板地址回调

@param url 白板地址
*/
- (void)onWhiteBoard:(NSString *)url;

/*!
主持人操作用户设备

@param userId 用户ID
@param hostId 主持人ID
@param dType 设备类型
@param isOpen 设备开启状态
*/
- (void)onNotifyHostControlUserDevice:(NSString *)userId host:(NSString *)hostId deviceType:(NSInteger)dType open:(BOOL)isOpen;

/*!
主持人升级用户

@param userId 用户ID
*/
- (void)onNotifyUpgradeObserverToNormalUser:(NSString *)userId;

/*!
观察者用户请求成为正常用户

@param userId 用户ID
*/
-(void)onNotifyAnswerObserverRequestBecomeNormalUser:(NSString *)userId;

设置是否生成通话记录消息。

// RCCallClient Class

/*!
是否生成通话记录消息,默认为YES
*/
@property(nonatomic, assign) BOOL enableCallSummary;