CNLiveChatStatusDefine.h 8.66 KB
//
//  CNLiveChatStatusDefine.h
//  CNLiveChatManager
//
//  Created by cnliveJunBo on 17/3/1.
//  Copyright © 2017年 cnlive. All rights reserved.
//

#import <Foundation/Foundation.h>

#pragma mark - 错误码相关

#pragma mark CNLiveChatConnectErrorCode - 建立连接返回的错误码
/*!
 建立连接返回的错误码
 
 */
typedef NS_ENUM(NSInteger, CNLiveChatConnectErrorCode) {
    
    /*!
     连接失败
     
     @discussion 建立连接失败, 具体原因请打印错误信息 errorMsg。
     */
    CNLive_NET_UNAVAILABLE = 30002,
    
    /*!
     连接过于频繁
     
     @discussion 建立连接的临时错误码,SDK会做好自动重连,开发者无须处理。
     */
    CNLive_CONN_OVERFREQUENCY = 30015,
    
    /*!
     Token无效
     
     @discussion Token无效一般有以下两种原因。(*自行处理)
     一是token错误,请您检查客户端初始化使用的AppKey和您服务器获取token使用的AppKey是否一致;
     二是token过期,是因为您在开发者后台设置了token过期时间,您需要请求您的服务器重新获取token并再次用新的token建立连接。
     */
    CNLive_CONN_TOKEN_INCORRECT = 31004,
    
    /*!
     Token请求失败
     
     @discussion 请检查连接服务器方法的参数是否正确,特别是用户信息中的用户ID。也可能是无网络。(*自行处理)
     */
    CNLive_CONN_TOKEN_NULL = 31012,
    
    /*!
     当前用户在其他设备上登陆。(*自行处理)
     */
    CNLive_DISCONN_KICK = 31010,
    
    /*!
     开发者接口调用时传入的参数错误
     
     @discussion 请检查接口调用时传入的参数类型和值。(*自行处理)
     */
    CNLive_CONN_INVALID_PARAMETER = 33003,
    
    /*!
     Connection已经存在
     
     @discussion
     调用过connect之后,建议在token错误或者被踢下线或者用户logout的情况下才需要再次调用connect。SDK会自动重连,不需要应用多次调用connect来保证连接性。(*自行处理)
     */
    CNLive_CONNECTION_EXIST = 34001,
    
    /*!
     Connection正在连接
     
     @discussion
     Connection正在连接,此时不能再次做connect操作,稍后再做操作(*自行处理)
     */
    CNLive_CONNECTION_CONNING = 34002,
    
    /*!
     开发者接口调用时传入的参数错误
     
     @discussion 请检查接口调用时传入的参数类型和值。(*自行处理)
     */
    CNLive_INVALID_ARGUMENT = -1000
};

#pragma mark CNLiveChatErrorCode - 具体业务错误码
/*!
 具体业务错误码
 */
typedef NS_ENUM(NSInteger, CNLiveChatErrorCode) {
    /*!
     未知错误(预留)
     */
    CNLive_ERRORCODE_UNKNOWN = -1,
    
    /*!
     token错误
     */
    CNLive_ERRORCODE_BY_TOKENERROR = 302,
    
    /*!
     创建聊天室失败
     */
    CNLive_ERRORCODE_BY_CREATECHATROOMFAIL = 303,
    
    /*!
    不合法的 targetId
     */
    CNLive_ERRORCODE_BY_TARGETIDERROR = 304,
    
    /*!
     不合法的 会话类型 type
     */
    CNLive_ERRORCODE_BY_CONVERSATIONTYPEERROR = 305,
    
    /*!
     加入聊天室时出现错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_JOIN_CHATROOM_ERROR = 30017,
    
    /*!
     获取聊天室人数错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_GET_CHATROOM_MEMBERS_COUNT = 30018,
    
    /*!
     退出聊天室时出现错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_QUIT_CHATROOM_ERROR = 30019,
    
    /*!
     发送文本消息时出现错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_SEND_TEXT_ERROR = 30020,
    
    /*!
     发送图片消息时出现错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_SEND_IMAGE_ERROR = 30021,
    
    /*!
     发送语音消息时出现错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_SEND_VOICE_ERROR = 30022,
    
    /*!
     发送语音消息体缺少参数。
     */
    CNLive_SEND_VOICE_PARAMERROR = 31022,
    
    /*!
     发送视频消息时出现错误, 详情请打印错误信息 errorMsg。
     */
    CNLive_SEND_VIDEO_ERROR = 30023,
    
    /*!
     发送视频消息体缺少参数。
     */
    CNLive_SEND_VIDEO_PARAMERROR = 31023,
};

#pragma mark - 会话相关

#pragma mark CNLiveConversationType - 会话类型
/*!
 会话类型
 */
typedef NS_ENUM(NSUInteger, CNLiveConversationType) {
    /*!
     私聊
     */
    CNLive_ConversationType_PRIVATE = 1,
    
    /*!
     聊天室
     */
    CNLive_ConversationType_CHATROOM = 4,
};

#pragma mark - 普通成功失败回调
/**
 *  一般操作成功回调
 */
typedef void (^CNLiveIMSucc)();

/**
 *  操作失败回调
 *
 *  @param code 错误码
 *  @param msg  错误描述,配合错误码使用,如果问题建议打印信息定位
 */
typedef void (^CNLiveIMFail)(int code, NSString * msg);

#pragma mark - 图片
/**
 *  图片压缩选项
 */
typedef NS_ENUM(NSInteger, CNLive_IMAGE_COMPRESS_TYPE){
    /**
     *  原图(不压缩)
     */
    CNLive_IMAGE_COMPRESS_ORIGIN              = 0x00,
    /**
     *  高压缩率:图片较小,默认值
     */
    CNLive_IMAGE_COMPRESS_HIGH                = 0x01,
    /**
     *  低压缩:高清图发送(图片较大)
     */
    CNLive_IMAGE_COMPRESS_LOW                 = 0x02,
};

/**
 *  图片格式
 */
typedef NS_ENUM(NSInteger, CNLive_IMAGE_FORMAT){
    /**
     *  JPG格式
     */
    CNLive_IMAGE_FORMAT_JPG            = 0x1,
    /**
     *  GIF格式
     */
    CNLive_IMAGE_FORMAT_GIF            = 0x2,
    /**
     *  PNG格式
     */
    CNLive_IMAGE_FORMAT_PNG            = 0x3,
    /**
     *  BMP格式
     */
    CNLive_IMAGE_FORMAT_BMP            = 0x4,
    /**
     *  未知格式
     */
    CNLive_IMAGE_FORMAT_UNKNOWN        = 0xff,
};

/**
 *  图片类型
 */
typedef NS_ENUM(NSInteger, CNLive_IMAGE_TYPE){
    /**
     *  原图
     */
    CNLive_IMAGE_TYPE_ORIGIN              = 0x01,
    /**
     *  缩略图
     */
    CNLive_IMAGE_TYPE_THUMB               = 0x02,
    /**
     *  大图
     */
    CNLive_IMAGE_TYPE_LARGE               = 0x04,
};

/**
 *  消息状态
 */
typedef NS_ENUM(NSInteger, CNLiveMessageStatus){
    /**
     *  消息发送中
     */
    CNLive_MSG_STATUS_SENDING              = 1,
    /**
     *  消息发送成功
     */
    CNLive_MSG_STATUS_SEND_SUCC            = 2,
    /**
     *  消息发送失败
     */
    CNLive_MSG_STATUS_SEND_FAIL            = 3,
    /**
     *  消息被删除
     */
    CNLive_MSG_STATUS_HAS_DELETED          = 4,
    /**
     *  导入到本地的消息
     */
    CNLive_MSG_STATUS_LOCAL_STORED         = 5,
    /**
     *  被撤销的消息
     */
    CNLive_MSG_STATUS_LOCAL_REVOKED        = 6,
};

#pragma mark - 线上状态

#pragma mark CNLiveConnectionStatus - 网络连接状态码
/*!
 网络连接状态码
 
 @discussion 开发者仅需要关注以下几种连接状态,其余状态SDK均会进行自动重连。
 CNLive_ConnectionStatus_Connected, CNLive_ConnectionStatus_Connecting,
 CNLive_ConnectionStatus_Unconnected,
 CNLive_ConnectionStatus_SignUp, CNLive_ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT,
 CNLive_ConnectionStatus_TOKEN_INCORRECT
 */
typedef NS_ENUM(NSInteger, CNLiveConnectionStatus) {
    /*!
     未知状态
     
     @discussion 建立连接中出现异常的临时状态,SDK会做好自动重连,开发者无须处理。
     */
    CNLive_ConnectionStatus_UNKNOWN = -1,
    
    /*!
     连接成功
     */
    CNLive_ConnectionStatus_Connected = 0,
    
    /*!
     当前用户在其他设备上登录,此设备被踢下线
     */
    CNLive_ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT = 6,
    
    /*!
     连接中
     */
    CNLive_ConnectionStatus_Connecting = 10,
    
    /*!
     连接失败或未连接
     */
    CNLive_ConnectionStatus_Unconnected = 11,
    
    /*!
     已注销
     */
    CNLive_ConnectionStatus_SignUp = 12,
    
    /*!
     Token无效
     
     @discussion
     Token无效一般有两种原因。一是token错误,请您检查客户端初始化使用的AppKey和您服务器获取token使用的AppKey是否一致;二是token过期,是因为您在开发者后台设置了token过期时间,您需要请求您的服务器重新获取token并再次用新的token建立连接。
     */
    CNLive_ConnectionStatus_TOKEN_INCORRECT = 31004,
    
    /*!
     与服务器的连接已断开
     
     @discussion 建立连接的临时状态,SDK会做好自动重连,开发者无须处理。
     */
    CNLive_ConnectionStatus_DISCONN_EXCEPTION = 31011,
    
    /*!
     与服务器的连接已断开
     
     @discussion 无法自动重连,需手动重新连接服务器 connectServerSuccess:error:。
     */
    CNLive_ConnectionStatus_DISCONN_MANUALCONN = 32011
};