iOS

# Plugin进阶应用

# 设置定制化参数

/**
* 设置定制配置参数
*
* @param customConfig 定制化配置参数
*/
setCustomConfig(config: JCCCommonCustomConfig<T>);

定制化配置参数

// 通用定制化配置
class JCCCommonCustomConfig {
  talkingConfig: JCCTalkingConfig;
}

// 视频客服定制化配置
export class JCCGuestCustomConfig extends JCCCommonCustomConfig {
  waitingConfig: JCCWaitingConfig;
}

// 呼叫参数
class JCCWaitingConfig {
    urgent: boolean; // 加急呼叫,默认true
}

// 通话参数
class JCCTalkingConfig {
  toolBarBackground: string; // 工具栏背景色,工具栏背景色,支持css颜色值,默认rgba(35, 35, 35, 0.7)
  localVideoFullScreen: boolean; // 本端全屏显示, 默认true
  remoteVideoFullScreen: boolean; // 远端全屏显示, 默认false
  videoHoldLastFrame: boolean; // 视频保持最后一帧, 默认false
}

示例代码

const customConfig = new JCCGuestCustomConfig();
customConfig.waitingConfig.urgent = false;

customConfig.talkingConfig.localVideoFullScreen = false;

...
JCCCallManager.shared().setCustomConfig(customConfig);

# 参数说明

# 1. 登录参数 JCCClientLoginParam

class JCCClientLoginParam {

    userName = ''; // 用户名
    displayName = ''; // 昵称
    appKey = ''; //用户从 Juphoon RTC 平台上申请的 AppKey 字符串
    server = ''; // 服务地址

    terminalType = ''; // 获取终端登录类型
    deviceId = ''; // 获取设备ID
    token = ''; // 校验token
    tokenType = '' ; // token类型
    tokenExtraParam = ''; // token额外参数
}

# 2. 呼叫参数 JCCCallCenterCallParam

// 视频客服guest呼叫参数
class JCCCallCenterCallParam {
    maxResolution = JCCResolution.R_720;  // 最大分辨率 default = 720P;
    maxFrameRate = 24;  // 最大帧率 default = 24
    svcResolution = "1 180 250 360 600 720 1400"; // svc分辨率  default = "1 180 250 360 600 720 1400"
    videoDefinition = JCCVideoDefinition.CUSTOM; // 房间视频清晰度
    extraInfo = ''; // 随路参数
    heartbeatTime = 20; // 心跳间隔 default = 20
    heartbeatTimeout = 60; // 心跳超时 default = 60
    securityType = JCCSecurityType.DISABLE;
    autoRecord = true; // 是否自动录制 default = true
    videoEncodeType = JCCVideoEncodeType.H264; // 视频编码 default = H264
    audioEncodeType = JCCAudioEncodeType.OPUS; // 音频编码 default = OPUS
    multiStream = false; // 是否多流合流

    vipPower = 0; // 呼叫权重
}

# 3. 通话属性变化参数 JCCRoomPropChangeParam

// 通话房间属性变化参数
export class JCCRoomPropChangeParam {

    /**
     * 上传音频状态是否变化
     * - true: 变化
     * - false: 没变化
     */
    uploadAudio = false;
    /**
     * 上传视频状态是否变化
     * - true: 变化
     * - false: 没变化
     */
    uploadVideo = false;
    /**
     * 远程录制状态是否变化
     * - true: 变化
     * - false: 没变化
     */
    remoteRecordState = false;
    /**
     * 屏幕共享状态是否变化
     * - true: 变化
     * - false: 没变化
     */
    screenShare = false;
}

# 4. 通话成员 JCCRoomParticipant

// 通话成员
class JCCRoomParticipant {
    netStatus = 0; 
    role = -1; // 角色
    audio = false; // 是否打开音频
    video = false; // 是否打开视频
    type = 0; // JCCRoomParticipantType 
    userId = ''; // 用户Id
    userUri = string;// 用户Uri,主要用于服务器交互使用,同步移动端
    displayName = string; // 昵称
    virtual = false; // 是否虚拟成员
    streamUrl = ''; // 推拉流地址
    changeParam = {};  // JCCRoomParticipantChangeParam
}

# 5. 房间成员属性变化参数 JCCRoomParticipantChangeParam

// 房间成员属性变化参数
class JCCRoomParticipantChangeParam {

    /**
     * 上传音频是否变化
     * - true: 变化
     * - false: 没变化
     */
    audio = false;

    /**
     * 上传视频是否变化
     * - true: 变化
     * - false: 没变化
     */
    video = false;

    /**
     * 视频请求大小是否变化
     * - true: 变化
     * - false: 没变化
     */
    videoSize = false;

    /**
     * 成员类型是否变化
     * - true: 变化
     * - false: 没变化
     */
    type = false;

    /**
     * 成员网络状态是否变化
     * - true: 变化
     * - false: 没变化
     */
    netStatus = false;
}

# 枚举值说明

登录状态 JCCClientState

/**
 * 登录状态枚举
 */
export const JCCClientState = {
    /**
     * 未初始化
     */
    NOT_INIT : 0,

    /**
     * 未登录
     */
    IDLE : ClientState.IDLE,

    /**
     * 登录中
     */
    LOGINING : ClientState.LOGINING,

    /**
     * 登录成功
     */
    LOGINED : ClientState.LOGINED,

     /**
      * 登出中
      */
    LOGOUTING : ClientState.LOGOUTING,
}

通话结束的原因 JCCCallTermReason

/**
  * 通话结束的原因
  */
export const JCCCallTermReason = {
    /**
     * 无错误
     */
    NONE : 0,
    /*
    * 本端结束通话
    */
    QUIT : CallTermReason.QUIT, 
    /**
     * 对端结束通话
     */
    OVER : CallTermReason.OVER,
    /**
     * 网络异常导致本端结束通话
     */
    OFFLINE : CallTermReason.OFFLINE,
    /**
     * 呼叫来电取消
     */
    INCOMING_CANCEL : CallTermReason.INCOMING_CANCEL,
    /**
     * 呼叫来电超时
     */
    INCOMING_TIMEOUT : CallTermReason.INCOMING_TIMEOUT,
    /**
     * 心跳超时
     */
    TIME_OUT : CallTermReason.TIME_OUT,
    /**
     * 会场人员上限,licence限制
     */
    JOIN_LICENCE_LIMIT : CallTermReason.JOIN_LICENCE_LIMIT,
    /**
     * 拒绝呼叫
     */
    REJECT : CallTermReason.REJECT,
    /**
     * 房间异常(服务端下发)
     */
    ROOM_ERROR : CallTermReason.ROOM_ERROR,
    /**
     * 呼叫失败
     */
    CALL_FAIL : CallTermReason.CALL_FAIL,
    /**
     * 参数错误
     */
    INVALID_PARAM : CallTermReason.INVALID_PARAM,
    /**
     * 方法调用失败
     */
    CALL_FUNCTION_ERROR : CallTermReason.CALL_FUNCTION_ERROR,
    /**
     * 用户未登录
     */
    NOT_LOGIN : CallTermReason.NOT_LOGIN,
    /**
     * 其他原因
     */
    OTHER : CallTermReason.OTHER,
}

原因枚举 JCCReasonCode

/**
 * 原因枚举
 */
export const JCCReasonCode = {
    /**
     * 正常
     */
    NONE : 0,
    /**
     * 其他原因
     */
    OTHER : ReasonCode.OTHER,
    /**
     * 参数错误
     */
    INVALID_PARAM : ReasonCode.INVALID_PARAM,
    /**
     * 当前状态无法再次登录
     */
    CLI_STATE_CANNOT_LOGIN : ReasonCode.CLI_STATE_CANNOT_LOGIN,
    /**
     * 登录超时
     */
    CLI_TIMEOUT : ReasonCode.CLI_TIMEOUT,
    /**
     * 登录网络异常
     */
    CLI_NETWORK : ReasonCode.CLIENT_NETWORK_ERROR,
    /**
     * 接入房间网络超时
     */
    ROOM_TIMEOUT : ReasonCode.ROOM_TIMEOUT,
    /**
     * 接入房间网络异常
     */
    ROOM_NETWORK : ReasonCode.ROOM_NETWORK,
    /**
     * 被踢出房间
     */
    ROOM_KICKED : ReasonCode.ROOM_KICKED,
    /**
     * 接入房间掉线
     */
    ROOM_OFFLINE : ReasonCode.ROOM_OFFLINE,
    /**
     * 主动离开房间
     */
    ROOM_QUIT : ReasonCode.ROOM_QUIT,
    /**
     * 房间关闭
     */
    ROOM_OVER : ReasonCode.ROOM_OVER,
    /**
     * 房间成员已满
     */
    ROOM_FULL : ReasonCode.ROOM_FULL,
    /**
     * 房间密码无效
     */
    ROOM_INVALID_PASSWORD : ReasonCode.ROOM_INVALID_PASSWORD,
    /**
     * 该房间号的房间不存在
     */
    REASON_CONF_NUMBER_NOT_FOUND : ReasonCode.REASON_CONF_NUMBER_NOT_FOUND,
    /**
     * 服务器房间成员总数上限(移动端房间人数)
     */
    ROOM_APP_CONCURRENCY_FUL : ReasonCode.ROOM_APP_CONCURRENCY_FUL,
    /**
     * 服务器房间成员总数上限(总房间人数)
     */
    ROOM_ALL_CONCURRENCY_FUL : ReasonCode.ROOM_ALL_CONCURRENCY_FUL,
    /**
     * 房间异常(服务端下发)
     */
    ROOM_INTERNAL_ERROR : ReasonCode.ROOM_INTERNAL_ERROR,
    /**
     * 会场人员上限,licence限制
     */
    ROOM_JOIN_LICENCE_LIMIT : ReasonCode.ROOM_JOIN_LICENCE_LIMIT,

    // 录制cd被释放
    ROOM_AGENT_RELEASE : ReasonCode.ROOM_AGENT_RELEASE,
}

视频编码 JCCVideoEncodeType

/**
 * 视频编码
 */
export const JCCVideoEncodeType = {
    /**
     * H264
     */
    H264 : 0,
    /**
     * AV1
     */
    AV1 : 1
}

音频编码 JCCAudioEncodeType

/**
 * 音频编码
 */
export const JCCAudioEncodeType = {
    /**
     * OPUS
     */ 
    OPUS : 0,
    /**
     * PCMA
     */
    PCMA : 1,
    /**
     * PCMU
     */
    PCMU : 2
}

分辨率 JCCResolution

/**
 * 分辨率
 */
export const JCCResolution = {
    R_360: 0, // 360p
    R_720: 1, // 720p
    R_1080: 2, // 1080p
}

视频清晰度 JCCVideoDefinition

/**
 * 视频清晰度
*/
export const JCCVideoDefinition = {
    /**
     * 自定义
     */
    CUSTOM : 0,
    /**
     * 流畅模式,低帧率
     * svc:  1 90 50 180 130 360 360
     * 最大帧率: 15fps
     */
    FLUENCY_FRAME_LOW: 1,
    /**
     * 流畅模式,高帧率
     * svc:  1 90 70 180 180 360 480
     * 最大帧率: 24fps
     */
    FLUENCY_FRAME_HIGH: 2,
    /**
     * 标清模式,低帧率
     * svc:  1 90 50 180 130 360 360 720 900
     * 最大帧率: 15fps
     */
    STANDARD_FRAME_LOW: 3,
    /**
     * 标清模式,高帧率
     * svc:  1 90 70 180 180 360 480 720 1350
     * 最大帧率: 24fps
     */
    STANDARD_FRAME_HIGH: 4,
    /**
     * 高清模式,低帧率
     * svc:  1 180 130 360 360 720 900 1080 1600
     * 最大帧率: 15fps
     */
    HIGH_FRAME_LOW: 5,
    /**
     * 高清模式,高帧率
     * svc:  1 180 180 360 480 720 1350 1080 2200
     * 最大帧率: 24fps
     */
    HIGH_FRAME_HIGH: 6,
}

加密方式 JCCSecurityType

/**
 * 加密方式
 */
export const JCCSecurityType = {
    /**
     * 不加密
     */
    DISABLE : 0,
    /**
     * SRTP
     */
    SRTP: 1,
    /**
     * SM4
     */
    SM4: 2
}

消息类型

/**
 * 消息类型
 */
export const JCCMessageType = {

    /**
     * 未知类型
     */
    TYPE_UNKNOWN : -1,
    /**
     * 一对一消息
     */
    TYPE_1TO1 : 0,
    /**
     * 群组消息
     */
    TYPE_GROUP : 2
}