通话状态监听

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

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

    // RCCallSession Class

    /**
     添加通话状态的监听器

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

    /**
      删除通话状态的监听器

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

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


/*!
 通话状态变化的监听器
 */
@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

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

// RCCallClient Class

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