+
+#ifndef __RCStatusDefine
+#define __RCStatusDefine
+
+#pragma mark - Error Code
+
+#pragma mark RCConnectErrorCode
+/*!
+ * \~chinese
+ 建立连接返回的错误码
+
+ * \~english
+ Error code returned by establishing a connection
+ */
+typedef NS_ENUM(NSInteger, RCConnectErrorCode) {
+
+ /*!
+ * \~chinese
+ AppKey 错误
+
+ @discussion 请检查您使用的 AppKey 是否正确。
+
+ * \~english
+ AppKey error.
+
+ @ discussion Please check that you are using the correct AppKey.
+ */
+ RC_CONN_ID_REJECT = 31002,
+
+ /*!
+ * \~chinese
+ Token 无效
+
+ @discussion 请检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey 是否一致。
+ @discussion 您可能需要请求您的服务器重新获取 token,并使用新的 token 建立连接。
+
+ * \~english
+ Invalid Token.
+
+ @ discussion Token is generally invalid for two reasons.
+ The first is the token error. Please check whether the AppKey used by the client initialization is consistent with the AppKey used by your server to obtain the token.
+ Second, the token expires because you set the token expiration time in the developer background. You shall request your server to retrieve the token and use the new token again to establish a connection.
+ */
+ RC_CONN_TOKEN_INCORRECT = 31004,
+
+ /*!
+ * \~chinese
+ App 校验未通过
+
+ @discussion 您开通了 App 校验功能,但是校验未通过
+
+ * \~english
+ AppKey does not match Token.
+
+ @ discussion
+ Please check that the AppKey and Token you are using are correct and match. Generally there are three reasons.
+ */
+ RC_CONN_NOT_AUTHRORIZED = 31005,
+
+ /*!
+ * \~chinese
+ BundleID 不正确
+
+ @discussion 请检查您 App 的 BundleID 是否正确。
+
+ * \~english
+ Incorrect BundleID.
+
+ @ discussion Please check that the BundleID of your App is correct.
+ */
+ RC_CONN_PACKAGE_NAME_INVALID = 31007,
+
+ /*!
+ * \~chinese
+ AppKey 被封禁或已删除
+
+ @discussion 请检查您使用的 AppKey 是否被封禁或已删除。
+
+ * \~english
+ AppKey is blocked or deleted.
+
+ @ discussion Please check whether the AppKey you are using is blocked or deleted.
+ */
+ RC_CONN_APP_BLOCKED_OR_DELETED = 31008,
+
+ /*!
+ * \~chinese
+ 用户被封禁
+
+ @discussion 请检查您使用的 Token 是否正确,以及对应的 UserId 是否被封禁。
+
+ * \~english
+ Users are blocked.
+
+ @ discussion Please check whether the Token you are using is correct and whether the corresponding UserId is blocked.
+ */
+ RC_CONN_USER_BLOCKED = 31009,
+
+ /*!
+ * \~chinese
+ 用户被踢下线
+
+ @discussion 当前用户在其他设备上登录,此设备被踢下线
+
+ * \~english
+ The user is kicked offline.
+
+ @ discussion The current user logs in on another device, and this device is kicked offline.
+ */
+ RC_DISCONN_KICK = 31010,
+
+ /*!
+ * \~chinese
+ token 已过期
+
+ @discussion 您可能需要请求您的服务器重新获取 token,并使用新的 token 建立连接。
+
+ * \~english
+ The token has expired
+
+ @Discussion you may need to request your server to retrieve the token and establish a connection with the new token.
+ */
+ RC_CONN_TOKEN_EXPIRE = 31020,
+
+ /*!
+ * \~chinese
+ 用户在其它设备上登录
+
+ @discussion 重连过程中当前用户在其它设备上登录
+
+ * \~english
+ The user logs in on another device.
+
+ @ discussion The current user logs in on another device during the reconnection process.
+ */
+ RC_CONN_OTHER_DEVICE_LOGIN = 31023,
+
+ /*!
+ * \~chinese
+ 连接总数量超过服务设定的并发限定值
+
+ @discussion 私有云专属
+
+ * \~english
+ The connection exceeds the concurrency limit.
+ @discussion private cloud only
+ */
+ CONCURRENT_LIMIT_ERROR = 31024,
+
+ /*!
+ * \~chinese
+ 环境校验失败
+
+ @discussion 请检查 AppKey 和连接环境(开发环境/生产环境)是否匹配
+
+ * \~english
+ Environment verification failed
+
+ @Discussion please check whether the appkey matches the connection environment (development environment / production environment)
+ */
+ RC_CONN_CLUSTER_ERROR = 31026,
+
+ /*!
+ * \~chinese
+ SDK 没有初始化
+
+ @discussion 在使用 SDK 任何功能之前,必须先 Init。
+
+ * \~english
+ SDK is not initialized.
+
+ @ discussion It must Init before using any SDK functionality.
+ */
+ RC_CLIENT_NOT_INIT = 33001,
+
+ /*!
+ * \~chinese
+ 开发者接口调用时传入的参数错误
+
+ @discussion 请检查接口调用时传入的参数类型和值。
+
+ * \~english
+ The parameter passed in when the developer interface is called is incorrect.
+
+ @ discussion Please check the parameter types and values passed in when the interface is called.
+ */
+ RC_INVALID_PARAMETER = 33003,
+
+ /*!
+ * \~chinese
+ Connection 已经存在
+
+ @discussion
+ 调用过connect之后,只有在 token 错误或者被踢下线或者用户 logout 的情况下才需要再次调用 connect。其它情况下 SDK
+ 会自动重连,不需要应用多次调用 connect 来保持连接。
+
+ * \~english
+ Connection already exists.
+
+ @ discussion
+ After calling connect, connect is called again only if there is a token error, or the user is kicked off, or the user logs out. In other cases, SDK will automatically reconnect, and an application need not call connect multiple times to maintain the connection.
+ */
+ RC_CONNECTION_EXIST = 34001,
+
+ /*!
+ * \~chinese
+ 连接环境不正确(融云公有云 SDK 无法连接到私有云环境)
+
+ @discussion 融云公有云 SDK 无法连接到私有云环境。请确认需要连接的环境,使用正确 SDK 版本。
+
+ * \~english
+ Incorrect connection environment (RongCloud public cloud SDK cannot connect to private cloud environment).
+
+ @ discussion RongCloud Public Cloud SDK cannot connect to the private cloud environment. Please confirm the environment to which you shall connect and use the correct SDK version.
+ */
+ RC_ENVIRONMENT_ERROR = 34005,
+
+ /*!
+ * \~chinese
+ 连接超时。
+
+ @discussion 当调用 connectWithToken:timeLimit:dbOpened:success:error: 接口,timeLimit 为有效值时,SDK 在 timeLimit 时间内还没连接成功返回此错误。
+
+ * \~english
+ The connection timed out.
+
+ @ discussion When connectWithToken:timeLimit:dbOpened:success:error: Interface is called, if timeLimit is a valid value and SDK has not been connected successfully within timeLimit time. This error is returned.
+ */
+ RC_CONNECT_TIMEOUT = 34006,
+
+ /*!
+ * \~chinese
+ 开发者接口调用时传入的参数错误
+
+ @discussion 请检查接口调用时传入的参数类型和值。
+
+ * \~english
+ The parameter passed in when the developer interface is called is incorrect.
+
+ @ discussion Please check the parameter types and values passed in when the interface is called.
+ */
+ RC_INVALID_ARGUMENT = -1000
+};
+
+#pragma mark RCErrorCode
+/*!
+ * \~chinese
+ 具体业务错误码
+
+ * \~english
+ Specific business error code
+ */
+typedef NS_ENUM(NSInteger, RCErrorCode) {
+ /*!
+ * \~chinese
+ 成功
+
+ * \~english
+ Success
+ */
+ RC_SUCCESS = 0,
+
+ /*!
+ * \~chinese
+ 未知错误(预留)
+
+ * \~english
+ Unknown error (reserved)
+ */
+ ERRORCODE_UNKNOWN = -1,
+
+ /*!
+ * \~chinese
+ 已被对方加入黑名单,消息发送失败。
+
+ * \~english
+ It has been blacklisted by the other party, and the message failed to be sent.
+ */
+ REJECTED_BY_BLACKLIST = 405,
+
+
+ /*!
+ * \~chinese
+ 上传媒体文件格式不支持
+
+ * \~english
+ Upload media file format is not supported
+ */
+ RC_MEDIA_FILETYPE_INVALID = 34019,
+
+ /*!
+ * \~chinese
+ 超时
+
+ * \~english
+ Timeout
+ */
+ ERRORCODE_TIMEOUT = 5004,
+
+ /*!
+ * \~chinese
+ 发送消息频率过高,1 秒钟最多只允许发送 5 条消息
+
+ * \~english
+ The frequency of sending messages is too high and a maximum of 5 messages are allowed to be sent per second
+ */
+ SEND_MSG_FREQUENCY_OVERRUN = 20604,
+
+ /*!
+ * \~chinese
+ 请求超出了调用频率限制,请稍后再试
+
+ @discussion 接口调用过于频繁,请稍后再试。
+
+ * \~english
+ The request exceeds the limit of call frequency. Please try again later.
+
+ @ discussion The interface is called too frequently. Please try again later.
+ */
+ RC_REQUEST_OVERFREQUENCY = 20607,
+
+ /*!
+ * \~chinese
+ 当前用户不在该讨论组中
+
+ * \~english
+ The current user is not in this discussion group.
+ */
+ NOT_IN_DISCUSSION = 21406,
+
+ /*!
+ * \~chinese
+ 当前用户不在该群组中
+
+ * \~english
+ The current user is not in this group
+ */
+ NOT_IN_GROUP = 22406,
+
+ /*!
+ * \~chinese
+ 当前用户在群组中已被禁言
+
+ * \~english
+ The current user has been banned in the group
+ */
+ FORBIDDEN_IN_GROUP = 22408,
+
+ /*!
+ * \~chinese
+ 当前用户不在该聊天室中
+
+ * \~english
+ The current user is not in this chatroom
+ */
+ NOT_IN_CHATROOM = 23406,
+
+ /*!
+ * \~chinese
+ 当前用户在该聊天室中已被禁言
+
+ * \~english
+ The current user has been banned in this chatroom
+ */
+ FORBIDDEN_IN_CHATROOM = 23408,
+
+ /*!
+ * \~chinese
+ 当前用户已被踢出并禁止加入聊天室。被禁止的时间取决于服务端调用踢出接口时传入的时间。
+
+ * \~english
+ The current user has been kicked out and banned from the chatroom. The prohibited time depends on the time passed in when the server invokes kicking out of the interface
+ */
+ KICKED_FROM_CHATROOM = 23409,
+
+ /*!
+ * \~chinese
+ 聊天室不存在
+
+ * \~english
+ chatroom does not exist
+ */
+ RC_CHATROOM_NOT_EXIST = 23410,
+
+ /*!
+ * \~chinese
+ 聊天室成员超限,默认聊天室成员没有人数限制,但是开发者可以提交工单申请针对 App Key
+ 进行聊天室人数限制,在限制人数的情况下,调用加入聊天室的接口时人数超限,就会返回此错误码
+
+ * \~english
+ chatroom membership exceeds the limit. By default, there is no limit on the number of chatroom members, but developers can submit a ticket to apply for App Key.
+ Limit the number of people in a chatroom. In the case of a limit, if the number of people exceeds the limit when calling the interface to join the chatroom, this error code will be returned.
+ */
+ RC_CHATROOM_IS_FULL = 23411,
+
+ /*!
+ * \~chinese
+ 聊天室接口参数无效。请确认参数是否为空或者有效。
+
+ * \~english
+ The chatroom interface parameter is invalid. Please confirm that the parameter is empty or valid.
+ */
+ RC_PARAMETER_INVALID_CHATROOM = 23412,
+
+ /*!
+ * \~chinese
+ 聊天室云存储业务未开通
+
+ * \~english
+ The chatroom cloud storage service has not been activated.
+ */
+ RC_ROAMING_SERVICE_UNAVAILABLE_CHATROOM = 23414,
+
+ /*!
+ * \~chinese
+ 超过聊天室的最大状态设置数,1 个聊天室默认最多设置 100 个
+
+ * \~english
+ The maximum number of status settings for a chatroom is exceeded and a maximum of 100 status settings can be set for 1 chatroom by default.
+ */
+ RC_EXCCED_MAX_KV_SIZE = 23423,
+
+ /*!
+ * \~chinese
+ 聊天室中非法覆盖状态值,状态已存在,没有权限覆盖
+
+ * \~english
+ The status value is illegally overwritten in the chatroom. The status already exists and there is no permission to overwrite it.
+ */
+ RC_TRY_OVERWRITE_INVALID_KEY = 23424,
+
+ /*!
+ * \~chinese
+ 超过聊天室中状态设置频率,1 个聊天室 1 秒钟最多设置和删除状态 100 次
+
+ * \~english
+ The maximum frequency of status setting in a chatroom is exceeded. The status for a chatroom can be set and deleted for up to 100 times per second.
+ */
+ RC_EXCCED_MAX_CALL_API_SIZE = 23425,
+
+ /*!
+ * \~chinese
+ 聊天室状态存储功能没有开通,请联系商务开通
+
+ * \~english
+ The chatroom status storage function is not enabled, please contact commerce person to open.
+ */
+ RC_KV_STORE_NOT_AVAILABLE = 23426,
+
+ /*!
+ * \~chinese
+ 聊天室状态值不存在
+
+ * \~english
+ The chatroom status value does not exist.
+ */
+ RC_KEY_NOT_EXIST = 23427,
+
+ /*!
+ * \~chinese
+ 操作跟服务端同步时出现问题,有可能是操作过于频繁所致。如果出现该错误,请延时 0.5s 再试
+
+ * \~english
+ There is a problem when the operation is synchronized with the server, which may be caused by the frequent operation. If this error occurs, please delay 0.5s and try again
+ */
+ RC_SETTING_SYNC_FAILED = 26002,
+
+ /*!
+ * \~chinese
+ 小视频服务未开通。可以在融云开发者后台中开启该服务。
+
+ * \~english
+ Small video service is not enabled. The service can be started in the background of rongyun developers.
+ */
+ RC_SIGHT_SERVICE_UNAVAILABLE = 26101,
+
+ /*!
+ * \~chinese
+ 聊天室状态未同步完成
+ 刚加入聊天室时调用获取 KV 接口,极限情况下会存在本地数据和服务器未同步完成的情况,建议延时一段时间再获取
+
+ * \~english
+ chatroom status is not completed synchronously.
+ Call the interface to get KV when you just join the chatroom. In extreme cases, the local data and the server are not completed synchronously. It is recommended to delay the acquisition for a period of time.
+ */
+ RC_KV_STORE_NOT_SYNC = 34004,
+
+ /*!
+ * \~chinese
+ 聊天室被重置
+
+ * \~english
+ The chatroom is reset
+ */
+ RC_CHATROOM_RESET = 33009,
+
+ /*!
+ * \~chinese
+ 当前连接不可用(连接已经被释放)
+
+ * \~english
+ The current connection is not available (the connection has been released).
+ */
+ RC_CHANNEL_INVALID = 30001,
+
+ /*!
+ * \~chinese
+ 当前连接不可用
+
+ * \~english
+ The current connection is not available.
+ */
+ RC_NETWORK_UNAVAILABLE = 30002,
+
+ /*!
+ * \~chinese
+ 客户端发送消息请求,融云服务端响应超时。
+
+ * \~english
+ The client sends a message request, and the RongCloud server responds to a timeout.
+ */
+ RC_MSG_RESPONSE_TIMEOUT = 30003,
+
+ /*!
+ * \~chinese
+ SDK 没有初始化
+
+ @discussion 在使用 SDK 任何功能之前,必须先 Init。
+
+ * \~english
+ SDK is not initialized.
+
+ @ discussion It must Init before using any SDK functionality.
+ */
+ CLIENT_NOT_INIT = 33001,
+
+ /*!
+ * \~chinese
+ 数据库错误
+
+ @discussion 连接融云的时候 SDK 会打开数据库,如果没有连接融云就调用了业务接口,因为数据库尚未打开,有可能出现该错误。
+ @discussion 数据库路径中包含 userId,如果您获取 token 时传入的 userId 包含特殊字符,有可能导致该错误。userId
+ 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式,最大长度 64 字节。
+
+ * \~english
+ Database error.
+
+ @ discussion The database will be opened when connecting to the cloud melting. If you do not connect to the cloud melting, the business interface will be called because the database has not been opened yet, and this error may occur.
+ @ discussion The database path contains userId, if the userId passed in when you get the token contains special characters, which may cause this error. UserId.
+ The combination of uppercase and lowercase letters, numbers and some special symbols + =-_ is supported, with a maximum length of 64 bytes.
+ */
+ DATABASE_ERROR = 33002,
+
+ /*!
+ * \~chinese
+ 开发者接口调用时传入的参数错误
+
+ @discussion 请检查接口调用时传入的参数类型和值。
+
+ * \~english
+ The parameter passed in when the developer interface is called is incorrect.
+
+ @ discussion Please check the parameter types and values passed in when the interface is called.
+ */
+ INVALID_PARAMETER = 33003,
+
+ /*!
+ * \~chinese
+ 历史消息云存储业务未开通。可以在融云开发者后台中开启该服务。
+
+ * \~english
+ The cloud storage service of historical messages has not been activated. You can enable this service in the backend of RongCloud developer.
+ */
+ MSG_ROAMING_SERVICE_UNAVAILABLE = 33007,
+
+ /*!
+ * \~chinese
+ 标签不存在
+
+ * \~english
+ Tag does not exist
+ */
+ RC_TAG_NOT_EXIST = 33100,
+
+ /*!
+ * \~chinese
+ 标签已存在
+
+ * \~english
+ Tag already exists
+ */
+ RC_TAG_ALREADY_EXISTS = 33101,
+
+ /*!
+ * \~chinese
+ 会话中不存在对应标签
+
+ * \~english
+ There is no corresponding tag in the conversation
+ */
+ RC_TAG_INVALID_FOR_CONVERSATION = 33102,
+
+ /*!
+ * \~chinese
+ 公众号非法类型,针对会话类型:ConversationType_APPSERVICE
+
+ * \~english
+ Illegal official account type, for conversation type: ConversationType_APPSERVICE
+ */
+ RC_APP_PUBLICSERVICE_ERROR_TYPE = 29201,
+
+ /*!
+ * \~chinese
+ 公众号默认已关注,针对会话类型:ConversationType_APPSERVICE
+
+ * \~english
+ Official account has been followed by default, for conversation type: ConversationType_APPSERVICE
+ */
+ RC_APP_PUBLICSERVICE_DEFFOLLOWED = 29102,
+
+ /*!
+ * \~chinese
+ 公众号已关注,针对会话类型:ConversationType_APPSERVICE
+
+ * \~english
+ Official account has been followed, for conversation type: ConversationType_APPSERVICE
+ */
+ RC_APP_PUBLICSERVICE_FOLLOWED = 29103,
+
+ /*!
+ * \~chinese
+ 公众号默认已取消关注,针对会话类型:ConversationType_APPSERVICE
+
+ * \~english
+ Official account has been unfollowed by default, for conversation type: ConversationType_APPSERVICE
+ */
+ RC_APP_PUBLICSERVICE_DEFUNFOLLOWED = 29104,
+
+ /*!
+ * \~chinese
+ 公众号已经取消关注,针对会话类型:ConversationType_APPSERVICE
+
+ * \~english
+ The official account has been unfollowed, for conversation type: ConversationType_APPSERVICE
+ */
+ RC_APP_PUBLICSERVICE_UNFOLLOWED = 29105,
+
+ /*!
+ * \~chinese
+ 公众号未关注,针对会话类型:ConversationType_APPSERVICE
+
+ * \~english
+ Official account is not followed, for conversation type: ConversationType_APPSERVICE.
+ */
+ RC_APP_PUBLICSERVICE_UNFOLLOW = 29106,
+
+ /*!
+ * \~chinese
+ 公众号非法类型,针对会话类型:ConversationType_PUBLICSERVICE
+
+ * \~english
+ Illegal official account type, for conversation type: ConversationType_PUBLICSERVICE
+ */
+ INVALID_PUBLIC_NUMBER = 29201,
+
+ /*!
+ * \~chinese
+ 公众号默认已关注,针对会话类型:ConversationType_PUBLICSERVICE
+
+ * \~english
+ Official account has been followed by default, for conversation type: ConversationType_PUBLICSERVICE
+ */
+ RC_PUBLICSERVICE_DEFFOLLOWED = 29202,
+
+ /*!
+ * \~chinese
+ 公众号已关注,针对会话类型:ConversationType_PUBLICSERVICE
+
+ * \~english
+ Official account has been following, for conversation type: ConversationType_PUBLICSERVICE
+ */
+ RC_PUBLICSERVICE_FOLLOWED = 29203,
+
+ /*!
+ * \~chinese
+ 公众号默认已取消关注,针对会话类型:ConversationType_PUBLICSERVICE
+
+ * \~english
+ Official account has been unfollowed by default, for conversation type: ConversationType_PUBLICSERVICE
+ */
+ RC_PUBLICSERVICE_DEFUNFOLLOWED = 29204,
+
+ /*!
+ * \~chinese
+ 公众号已经取消关注,针对会话类型:ConversationType_PUBLICSERVICE
+
+ * \~english
+ The official account has been unfollowed, for conversation type: ConversationType_PUBLICSERVICE
+ */
+ RC_PUBLICSERVICE_UNFOLLOWED = 29205,
+
+ /*!
+ * \~chinese
+ 公众号未关注,针对会话类型:ConversationType_PUBLICSERVICE
+
+ * \~english
+ Official account is not followed, for conversation type: ConversationType_PUBLICSERVICE
+ */
+ RC_PUBLICSERVICE_UNFOLLOW = 29206,
+
+ /*!
+ * \~chinese
+ 消息大小超限,消息体(序列化成 json 格式之后的内容)最大 128k bytes。
+
+ * \~english
+ The message size exceeds the limit, and the message body (the content after serialization into json format) is up to 128k bytes
+ */
+ RC_MSG_SIZE_OUT_OF_LIMIT = 30016,
+
+ /*!
+ * \~chinese
+ 撤回消息参数无效。请确认撤回消息参数是否正确的填写。
+
+ * \~english
+ The recall message parameter is invalid. Please make sure that the recall message parameters are filled in correctly.
+ */
+ RC_RECALLMESSAGE_PARAMETER_INVALID = 25101,
+
+ /*!
+ * \~chinese
+ push 设置参数无效。请确认是否正确的填写了 push 参数。
+
+ * \~english
+ Invalid push setting parameter. Please make sure that the push parameter is entered correctly.
+ */
+ RC_PUSHSETTING_PARAMETER_INVALID = 26001,
+
+ /*!
+ * \~chinese
+ 用户标签个数超限,最多支持添加 20 个标签
+
+ * \~english
+ The number of user tags exceeds the limit and a maximum of 20 tags can be added.
+ */
+ RC_TAG_LIMIT_EXCEED = 26004,
+
+ /*!
+ * \~chinese
+ 操作被禁止。 此错误码已被弃用。
+
+ * \~english
+ The operation is prohibited. This error code has been deprecated.
+ */
+ RC_OPERATION_BLOCKED = 20605,
+
+ /*!
+ * \~chinese
+ 操作不支持。仅私有云有效,服务端禁用了该操作。
+
+ * \~english
+ The operation is not supported. Only the private cloud is valid, and the server disables this operation.
+ */
+ RC_OPERATION_NOT_SUPPORT = 20606,
+
+ /*!
+ * \~chinese
+ 发送的消息中包含敏感词 (发送方发送失败,接收方不会收到消息)
+
+ * \~english
+ The message sent contains sensitive words (the sender fails to send, and the receiver does not receive the message).
+ */
+ RC_MSG_BLOCKED_SENSITIVE_WORD = 21501,
+
+ /*!
+ * \~chinese
+ 消息中敏感词已经被替换 (接收方可以收到被替换之后的消息)
+
+ * \~english
+ The sensitive words in the message have been replaced (the receiver can receive the message after the replacement).
+ */
+ RC_MSG_REPLACED_SENSITIVE_WORD = 21502,
+
+ /*!
+ * \~chinese
+ 小视频时间长度超出限制,默认小视频时长上限为 2 分钟
+
+ * \~english
+ The length of small video exceeds the limit. By default, the maximum length of small video is 2 minutes.
+ */
+ RC_SIGHT_MSG_DURATION_LIMIT_EXCEED = 34002,
+
+ /*!
+ * \~chinese
+ GIF 消息文件大小超出限制, 默认 GIF 文件大小上限是 2 MB
+
+ * \~english
+ The size of the GIF message file exceeds the limit and the maximum size of the default GIF file is 2 MB
+ */
+ RC_GIF_MSG_SIZE_LIMIT_EXCEED = 34003,
+
+ /**
+ * \~chinese
+ * 查询的公共服务信息不存在。
+ * 请确认查询的公共服务的类型和公共服务 id 是否匹配。
+
+ * \~english
+ * The public service information queried does not exist.
+ * Please make sure that the type of public service queried matches the public service id.
+ */
+ RC_PUBLIC_SERVICE_PROFILE_NOT_EXIST = 34007,
+
+ /**
+ * \~chinese
+ * 消息不能被扩展。
+ * 消息在发送时,RCMessage 对象的属性 canIncludeExpansion 置为 YES 才能进行扩展。
+
+ * \~english
+ * Messages cannot be extended.
+ * When a message is sent, the property canIncludeExpansion of the RCMessage object is set to YES before it can be extended.
+ */
+ RC_MESSAGE_CANT_EXPAND = 34008,
+
+ /**
+ * \~chinese
+ * 消息扩展失败。
+ *
一般是网络原因导致的,请确保网络状态良好,并且融云 SDK 连接正常
+
+ * \~english
+ * Message expansion failed.
+ * Usually it is caused by the network. Make sure the network is in good condition and the cloud SDK connection is normal
.
+ */
+ RC_MESSAGE_EXPAND_FAIL = 34009,
+
+ /*!
+ * \~chinese
+ 消息扩展大小超出限制, 默认消息扩展字典 key 长度不超过 32 ,value 长度不超过 64 ,单次设置扩展数量最大为 20,消息的扩展总数不能超过 300
+
+ * \~english
+ The message extension size exceeds the limit. The default message extension dictionary key length does not exceed 32, the value length does not exceed 64, the maximum number of extensions set at a time is 20, and the total number of message extensions cannot exceed 300.
+ */
+ RC_MSG_EXPANSION_SIZE_LIMIT_EXCEED = 34010,
+
+ /*!
+ * \~chinese
+ 媒体消息媒体文件 http 上传失败
+
+ * \~english
+ Media message media file http upload failed
+ */
+ RC_FILE_UPLOAD_FAILED = 34011,
+
+ /*!
+ * \~chinese
+ 指定的会话类型不支持标签功能,会话标签仅支持单群聊会话、系统会话
+
+ * \~english
+ The specified conversation type does not support tag function, and conversation tag only supports single group chat conversation and system conversation
+ */
+ RC_CONVERSATION_TAG_INVALID_CONVERSATION_TYPE = 34012,
+
+ /*!
+ * \~chinese
+ 批量处理指定标签的会话个数超限,批量处理会话个数最大为 1000
+
+ * \~english
+ The number of conversations for batch processing of specified tags exceeds the limit, and the maximum number of conversations for batch processing is 1000
+ */
+ RC_CONVERSATION_TAG_LIMIT_EXCEED = 34013,
+
+ /*!
+ * \~chinese
+ 群已读回执版本不支持
+
+ * \~english
+ Group read receipt version is not supported
+ */
+ RC_Group_Read_Receipt_Version_Not_Support = 34014,
+
+ /*!
+ * \~chinese
+ 视频消息压缩失败
+
+ * \~english
+ Video message compression failed
+ */
+ RC_SIGHT_COMPRESS_FAILED = 34015,
+
+ /*!
+ * \~chinese
+ 用户级别设置未开通
+
+ * \~english
+ User level settings are not enabled
+ */
+ RC_USER_SETTING_DISABLED = 34016,
+
+ /*!
+ * \~chinese
+ 消息处理失败
+ * 一般是消息处理为 nil
+
+ * \~english
+ Message processing failed.
+ * Generally, messages are handled as nil
+ */
+ RC_MESSAGE_NULL_EXCEPTION = 34017,
+
+ /*!
+ * \~chinese
+ 媒体文件上传异常,媒体文件不存在或文件大小为 0
+
+ * \~english
+ Media file upload exception, media file does not exist or file size is 0
+ */
+ RC_MEDIA_EXCEPTION = 34018,
+};
+
+typedef NS_ENUM(NSInteger, RCDBErrorCode) {
+ RCDBOpenSuccess = 0,
+ RCDBOpenFailed = 33002,
+};
+
+#pragma mark - RCConnectionStatus
+
+#pragma mark RCConnectionStatus
+/*!
+ * \~chinese
+ 网络连接状态码
+
+ * \~english
+ Network connection status code.
+ */
+typedef NS_ENUM(NSInteger, RCConnectionStatus) {
+ /*!
+ * \~chinese
+ 未知状态
+
+ @discussion 建立连接中出现异常的临时状态,SDK 会做好自动重连,开发者无须处理。
+
+ * \~english
+ Unknown state.
+
+ @ discussion If an abnormal temporary state occurs during the connection establishment, SDK will reconnect automatically and developers need not deal with it.
+ */
+ ConnectionStatus_UNKNOWN = -1,
+
+ /*!
+ * \~chinese
+ 连接成功
+
+ * \~english
+ Connected successfully
+ */
+ ConnectionStatus_Connected = 0,
+
+ /*!
+ * \~chinese
+ 连接过程中,当前设备网络不可用
+
+ @discussion 当网络恢复可用时,SDK 会做好自动重连,开发者无须处理。
+
+ * \~english
+ The current device network is not available during connection.
+
+ @ discussion When the network is available, SDK will reconnect automatically, so developers don't have to deal with it.
+ */
+ ConnectionStatus_NETWORK_UNAVAILABLE = 1,
+
+ /*!
+ * \~chinese
+ 当前用户在其他设备上登录,此设备被踢下线
+
+ * \~english
+ The current user is logged in on another device, and this device is kicked off the line.
+ */
+ ConnectionStatus_KICKED_OFFLINE_BY_OTHER_CLIENT = 6,
+
+ /*!
+ * \~chinese
+ 连接中
+
+ * \~english
+ Connecting
+ */
+ ConnectionStatus_Connecting = 10,
+
+ /*!
+ * \~chinese
+ 连接失败或未连接
+
+ * \~english
+ Connection failed or not connected.
+ */
+ ConnectionStatus_Unconnected = 11,
+
+ /*!
+ * \~chinese
+ 已登出
+
+ * \~english
+ Logged out.
+ */
+ ConnectionStatus_SignOut = 12,
+
+ /*!
+ * \~chinese
+ 连接暂时挂起(多是由于网络问题导致),SDK 会在合适时机进行自动重连
+
+ * \~english
+ Connection is temporarily suspended (mostly due to network problems that cause) and SDK will reconnect automatically at the appropriate time.
+ */
+ ConnectionStatus_Suspend = 13,
+
+ /*!
+ * \~chinese
+ 自动连接超时,SDK 将不会继续连接,用户需要做超时处理,再自行调用 connectWithToken 接口进行连接
+
+ * \~english
+ Automatic connection timeout, SDK will not continue to connect, users shall do timeout handling, and the connectWithToken interface is called to connect.
+ */
+ ConnectionStatus_Timeout = 14,
+
+ /*!
+ * \~chinese
+ Token无效
+
+ @discussion
+ Token 无效一般有两种原因。一是 token 错误,请您检查客户端初始化使用的 AppKey 和您服务器获取 token 使用的 AppKey
+ 是否一致;二是 token 过期,是因为您在开发者后台设置了 token 过期时间,您需要请求您的服务器重新获取 token
+ 并再次用新的 token 建立连接。
+
+ * \~english
+ Invalid Token.
+
+ @ discussion
+ Generally there are two reasons why Token is invalid. One is the token error. Please check the AppKey used by the client initialization and the AppKey used by your server to obtain the token.
+ Whether it is consistent; Second, the token expires because you set the token expiration time in the developer background, and you shall request your server to retrieve the token and establish a connection with the new token again.
+ */
+ ConnectionStatus_TOKEN_INCORRECT = 15,
+
+ /*!
+ * \~chinese
+ 与服务器的连接已断开,用户被封禁
+
+ * \~english
+ The connection to the server has been disconnected and the user is blocked.
+ */
+ ConnectionStatus_DISCONN_EXCEPTION = 16
+};
+
+#pragma mark RCNetworkStatus
+/*!
+ * \~chinese
+ 当前所处的网络
+
+ * \~english
+ Current network
+ */
+typedef NS_ENUM(NSUInteger, RCNetworkStatus) {
+ /*!
+ * \~chinese
+ 当前网络不可用
+
+ * \~english
+ The current network is not available
+ */
+ RC_NotReachable = 0,
+
+ /*!
+ * \~chinese
+ 当前处于 WiFi 网络
+
+ * \~english
+ Currently on WiFi network
+ */
+ RC_ReachableViaWiFi = 1,
+
+ /*!
+ * \~chinese
+ 移动网络
+
+ * \~english
+ Mobile network
+ */
+ RC_ReachableViaWWAN = 2,
+};
+
+#pragma mark RCSDKRunningMode
+/*!
+ * \~chinese
+ SDK 当前所处的状态
+
+ * \~english
+ The current state of SDK
+ */
+typedef NS_ENUM(NSUInteger, RCSDKRunningMode) {
+ /*!
+ * \~chinese
+ 后台运行状态
+
+ * \~english
+ Background running status
+ */
+ RCSDKRunningMode_Background = 0,
+
+ /*!
+ * \~chinese
+ 前台运行状态
+
+ * \~english
+ Foreground operation status
+ */
+ RCSDKRunningMode_Foreground = 1
+};
+
+#pragma mark - Conversation
+
+#pragma mark RCConversationType
+/*!
+ * \~chinese
+ 会话类型
+
+ * \~english
+ Conversation type
+ */
+typedef NS_ENUM(NSUInteger, RCConversationType) {
+ /*!
+ * \~chinese
+ 单聊
+
+ * \~english
+ Chat alone
+ */
+ ConversationType_PRIVATE = 1,
+
+ /*!
+ * \~chinese
+ 讨论组
+
+ * \~english
+ Discussion group
+ */
+ ConversationType_DISCUSSION = 2,
+
+ /*!
+ * \~chinese
+ 群组
+
+ * \~english
+ Group
+ */
+ ConversationType_GROUP = 3,
+
+ /*!
+ * \~chinese
+ 聊天室
+
+ * \~english
+ chatroom
+ */
+ ConversationType_CHATROOM = 4,
+
+ /*!
+ * \~chinese
+ 客服
+
+ * \~english
+ Customer Service
+ */
+ ConversationType_CUSTOMERSERVICE = 5,
+
+ /*!
+ * \~chinese
+ 系统会话
+
+ * \~english
+ System conversation
+ */
+ ConversationType_SYSTEM = 6,
+
+ /*!
+ * \~chinese
+ 应用内公众服务会话
+
+ @discussion
+ 客服 2.0 使用应用内公众服务会话(ConversationType_APPSERVICE)的方式实现。
+ 即客服 2.0 会话是其中一个应用内公众服务会话, 这种方式我们目前不推荐,
+ 请尽快升级到新客服,升级方法请参考官网的客服文档。文档链接
+ https://docs.rongcloud.cn/services/public/app/prepare/
+
+ * \~english
+ In-application public service conversation.
+
+ @ discussion
+ Customer service 2. 0 is implemented using an in-application public service conversation (ConversationType_APPSERVICE).
+ That is, customer service 2.0 conversation is one of the public service conversations in the application, which we do not recommend at this time.
+ Please upgrade to the new customer service as soon as possible. For upgrade methods, please refer to the customer service documentation on the official website. Document link.
+ https://docs.rongcloud.cn/services/public/app/prepare/
+ */
+ ConversationType_APPSERVICE = 7,
+
+ /*!
+ * \~chinese
+ 跨应用公众服务会话
+
+ * \~english
+ Cross-application public service conversation
+ */
+ ConversationType_PUBLICSERVICE = 8,
+
+ /*!
+ * \~chinese
+ 推送服务会话
+
+ * \~english
+ Push service conversation
+ */
+ ConversationType_PUSHSERVICE = 9,
+
+ /*!
+ * \~chinese
+ 加密会话(仅对部分私有云用户开放,公有云用户不适用)
+
+ * \~english
+ Encrypted conversation (only available to some private cloud users, not public cloud users)
+ */
+ ConversationType_Encrypted = 11,
+ /**
+ * \~chinese
+ * RTC 会话
+
+ * \~english
+ * RTC conversation
+ */
+ ConversationType_RTC = 12,
+
+ /*!
+ * \~chinese
+ 无效类型
+
+ * \~english
+ Invalid type
+ */
+ ConversationType_INVALID
+
+};
+
+#pragma mark RCConversationNotificationStatus
+/*!
+ * \~chinese
+ 会话提醒状态
+
+ * \~english
+ Conversation reminder status
+ */
+typedef NS_ENUM(NSUInteger, RCConversationNotificationStatus) {
+ /*!
+ * \~chinese
+ 免打扰
+
+ * \~english
+ Do not disturb
+ */
+ DO_NOT_DISTURB = 0,
+
+ /*!
+ * \~chinese
+ 新消息提醒
+
+ * \~english
+ New message reminder
+ */
+ NOTIFY = 1,
+};
+
+#pragma mark RCReadReceiptMessageType
+/*!
+ * \~chinese
+ 已读状态消息类型
+
+ * \~english
+ Read status message type
+ */
+typedef NS_ENUM(NSUInteger, RCReadReceiptMessageType) {
+ /*!
+ * \~chinese
+ 根据会话来更新未读消息状态
+
+ * \~english
+ Update the status of unread messages based on the conversation
+ */
+ RC_ReadReceipt_Conversation = 1,
+};
+
+#pragma mark - Message
+
+#pragma mark RCMessagePersistent
+/*!
+ * \~chinese
+ 消息的存储策略
+
+ * \~english
+ Storage strategy of messages
+ */
+typedef NS_ENUM(NSUInteger, RCMessagePersistent) {
+ /*!
+ * \~chinese
+ 在本地不存储,不计入未读数
+
+ * \~english
+ It is not stored locally and is not counted as unread number
+ */
+ MessagePersistent_NONE = 0,
+
+ /*!
+ * \~chinese
+ 在本地只存储,但不计入未读数
+
+ * \~english
+ Only stored locally, but not counted as unread number
+ */
+ MessagePersistent_ISPERSISTED = 1,
+
+ /*!
+ * \~chinese
+ 在本地进行存储并计入未读数
+
+ * \~english
+ Store locally and count as unread number
+ */
+ MessagePersistent_ISCOUNTED = 3,
+
+ /*!
+ * \~chinese
+ 在本地不存储,不计入未读数,并且如果对方不在线,服务器会直接丢弃该消息,对方如果之后再上线也不会再收到此消息。
+
+ @discussion 一般用于发送输入状态之类的消息,该类型消息的messageUId为nil。
+
+ * \~english
+ It is not stored locally and is not counted into unread number. If the other party is not online, the server will directly discard the message, and the other party will not receive the message if it goes online later.
+
+ @ discussion It is typically used to send messages such as input status, and the messageUId for this type of message is nil.
+ */
+ MessagePersistent_STATUS = 16
+};
+
+#pragma mark RCMessageDirection
+/*!
+ * \~chinese
+ 消息的方向
+
+ * \~english
+ The direction of the message.
+ */
+typedef NS_ENUM(NSUInteger, RCMessageDirection) {
+ /*!
+ * \~chinese
+ 发送
+
+ * \~english
+ Send
+ */
+ MessageDirection_SEND = 1,
+
+ /*!
+ * \~chinese
+ 接收
+
+ * \~english
+ Receive
+ */
+ MessageDirection_RECEIVE = 2
+};
+
+#pragma mark RCSentStatus
+/*!
+ * \~chinese
+ 消息的发送状态
+
+ * \~english
+ The sending status of the message
+ */
+typedef NS_ENUM(NSUInteger, RCSentStatus) {
+ /*!
+ * \~chinese
+ 发送中
+
+ * \~english
+ Sending
+ */
+ SentStatus_SENDING = 10,
+
+ /*!
+ * \~chinese
+ 发送失败
+
+ * \~english
+ Failed to send
+ */
+ SentStatus_FAILED = 20,
+
+ /*!
+ * \~chinese
+ 已发送成功
+
+ * \~english
+ Sent successfully
+ */
+ SentStatus_SENT = 30,
+
+ /*!
+ * \~chinese
+ 对方已接收
+
+ * \~english
+ The other party has received
+ */
+ SentStatus_RECEIVED = 40,
+
+ /*!
+ * \~chinese
+ 对方已阅读
+
+ * \~english
+ The other party has read
+ */
+ SentStatus_READ = 50,
+
+ /*!
+ * \~chinese
+ 对方已销毁
+
+ * \~english
+ The other party has been destroyed
+ */
+ SentStatus_DESTROYED = 60,
+
+ /*!
+ * \~chinese
+ 发送已取消
+
+ * \~english
+ Sending is canceled
+ */
+ SentStatus_CANCELED = 70,
+
+ /*!
+ * \~chinese
+ 无效类型
+
+ * \~english
+ Invalid type
+ */
+ SentStatus_INVALID
+};
+
+#pragma mark RCReceivedStatus
+/*!
+ * \~chinese
+ 消息的接收状态
+
+ * \~english
+ The receiving status of the message
+ */
+typedef NS_ENUM(NSUInteger, RCReceivedStatus) {
+ /*!
+ * \~chinese
+ 未读
+
+ * \~english
+ Unread
+ */
+ ReceivedStatus_UNREAD = 0,
+
+ /*!
+ * \~chinese
+ 已读
+
+ * \~english
+ Read
+ */
+ ReceivedStatus_READ = 1,
+
+ /*!
+ * \~chinese
+ 已听
+
+ @discussion 仅用于语音消息
+
+ * \~english
+ Heard.
+
+ @ discussion It is for voice messages only
+ */
+ ReceivedStatus_LISTENED = 2,
+
+ /*!
+ * \~chinese
+ 已下载
+
+ * \~english
+ Downloaded
+ */
+ ReceivedStatus_DOWNLOADED = 4,
+
+ /*!
+ * \~chinese
+ 该消息已经被其他登录的多端收取过。(即该消息已经被其他端收取过后。当前端才登录,并重新拉取了这条消息。客户可以通过这个状态更新
+ UI,比如不再提示)。
+
+ * \~english
+ This message has been received by other logins. (That is, after the message has been received by other parties. The current side just logs in and pulls the message again. Customers can update UI through this status, for example, no more prompts).
+ */
+ ReceivedStatus_RETRIEVED = 8,
+
+ /*!
+ * \~chinese
+ 该消息是被多端同时收取的。(即其他端正同时登录,一条消息被同时发往多端。客户可以通过这个状态值更新自己的某些 UI
+ 状态)。
+
+ * \~english
+ The message is received by multiple parties at the same time. (That is, other terminals log in at the same time, and a message is sent to multiple terminals at the same time. Customers can update some of their UI status with this status value).
+ */
+ ReceivedStatus_MULTIPLERECEIVE = 16,
+
+};
+
+#pragma mark RCMediaType
+/*!
+ * \~chinese
+ 消息内容中多媒体文件的类型
+
+ * \~english
+ The type of multimedia file in the message content
+ */
+typedef NS_ENUM(NSUInteger, RCMediaType) {
+ /*!
+ * \~chinese
+ 图片
+
+ * \~english
+ Image
+ */
+ MediaType_IMAGE = 1,
+
+ /*!
+ * \~chinese
+ 语音
+
+ * \~english
+ Voice
+ */
+ MediaType_AUDIO = 2,
+
+ /*!
+ * \~chinese
+ 视频
+
+ * \~english
+ Video
+ */
+ MediaType_VIDEO = 3,
+
+ /*!
+ * \~chinese
+ 其他文件
+
+ * \~english
+ Other documents
+ */
+ MediaType_FILE = 4,
+
+ /*!
+ * \~chinese
+ 小视频
+
+ * \~english
+ Small video
+ */
+ MediaType_SIGHT = 5,
+
+ /*!
+ * \~chinese
+ 合并转发
+
+ * \~english
+ Merge and forward
+ */
+ MediaType_HTML = 6
+};
+
+#pragma mark RCMentionedType
+/*!
+ * \~chinese
+ @提醒的类型
+
+ * \~english
+ @ Type of reminder
+ */
+typedef NS_ENUM(NSUInteger, RCMentionedType) {
+ /*!
+ * \~chinese
+ @ 所有人
+
+ * \~english
+ @ Everyone
+ */
+ RC_Mentioned_All = 1,
+
+ /*!
+ * \~chinese
+ @ 部分指定用户
+
+ * \~english
+ @ Part of the specified user
+ */
+ RC_Mentioned_Users = 2,
+};
+
+/**
+ * \~chinese
+ 语音消息采样率
+
+ - RCSample_Rate_8000: 8KHz
+ - RCSample_Rate_16000: 16KHz
+
+ * \~english
+ Voice message sampling rate.
+
+ -RCSample_Rate_8000: 8KHz.
+ -RCSample_Rate_16000: 16KHz
+ */
+typedef NS_ENUM(NSInteger, RCSampleRate) {
+ RCSample_Rate_8000 = 1, // 8KHz
+ RCSample_Rate_16000 = 2, // 16KHz
+};
+
+/**
+ * \~chinese
+ 语音消息类型
+
+ - RCVoiceMessageTypeOrdinary: 普通音质语音消息
+ - RCVoiceMessageTypeHighQuality: 高音质语音消息
+
+ * \~english
+ Voice message type.
+
+ -RCVoiceMessageTypeOrdinary: Normal sound quality voice message.
+ -RCVoiceMessageTypeHighQuality: High quality voice message.
+ */
+typedef NS_ENUM(NSInteger, RCVoiceMessageType) {
+ RCVoiceMessageTypeOrdinary = 1,
+ RCVoiceMessageTypeHighQuality = 2,
+};
+
+#pragma mark - PublicService
+
+#pragma mark RCPublicServiceType
+/*!
+ * \~chinese
+ 公众服务账号类型
+
+ * \~english
+ Type of public service account
+ */
+typedef NS_ENUM(NSUInteger, RCPublicServiceType) {
+ /*!
+ * \~chinese
+ 应用内公众服务账号
+
+ * \~english
+ Public service account in the application
+ */
+ RC_APP_PUBLIC_SERVICE = 7,
+
+ /*!
+ * \~chinese
+ 跨应用公众服务账号
+
+ * \~english
+ Cross-application public service account
+ */
+ RC_PUBLIC_SERVICE = 8,
+};
+
+#pragma mark RCPublicServiceMenuItemType
+/*!
+ * \~chinese
+ 公众服务菜单类型
+
+ * \~english
+ Public service menu type
+ */
+typedef NS_ENUM(NSUInteger, RCPublicServiceMenuItemType) {
+ /*!
+ * \~chinese
+ 包含子菜单的一组菜单
+
+ * \~english
+ A set of menus containing submenus
+ */
+ RC_PUBLIC_SERVICE_MENU_ITEM_GROUP = 0,
+
+ /*!
+ * \~chinese
+ 包含查看事件的菜单
+
+ * \~english
+ Menu containing view events
+ */
+ RC_PUBLIC_SERVICE_MENU_ITEM_VIEW = 1,
+
+ /*!
+ * \~chinese
+ 包含点击事件的菜单
+
+ * \~english
+ Menu containing click events
+ */
+ RC_PUBLIC_SERVICE_MENU_ITEM_CLICK = 2,
+};
+
+#pragma mark RCSearchType
+/*!
+ * \~chinese
+ 公众服务查找匹配方式
+
+ * \~english
+ Public service search matching mode
+ */
+typedef NS_ENUM(NSUInteger, RCSearchType) {
+ /*!
+ * \~chinese
+ 精确匹配
+
+ * \~english
+ Exact matching
+ */
+ RC_SEARCH_TYPE_EXACT = 0,
+
+ /*!
+ * \~chinese
+ 模糊匹配
+
+ * \~english
+ Fuzzy matching
+ */
+ RC_SEARCH_TYPE_FUZZY = 1,
+ /*!
+ * \~chinese
+ 无效类型
+
+ * \~english
+ Invalid type
+ */
+ RCSearchType_INVALID
+};
+
+/*!
+ * \~chinese
+ 客服服务方式
+
+ * \~english
+ Customer service mode
+ */
+typedef NS_ENUM(NSUInteger, RCCSModeType) {
+ /*!
+ * \~chinese
+ 无客服服务
+
+ * \~english
+ No customer service
+ */
+ RC_CS_NoService = 0,
+
+ /*!
+ * \~chinese
+ 机器人服务
+
+ * \~english
+ Robot service
+ */
+ RC_CS_RobotOnly = 1,
+
+ /*!
+ * \~chinese
+ 人工服务
+
+ * \~english
+ Manual service
+ */
+ RC_CS_HumanOnly = 2,
+
+ /*!
+ * \~chinese
+ 机器人优先服务
+
+ * \~english
+ Robot priority service
+ */
+ RC_CS_RobotFirst = 3,
+};
+
+/*!
+ * \~chinese
+ 客服评价时机
+
+ * \~english
+ Timing of customer service evaluation
+ */
+typedef NS_ENUM(NSUInteger, RCCSEvaEntryPoint) {
+ /*!
+ * \~chinese
+ 离开客服评价
+
+ * \~english
+ Leave customer service evaluation
+ */
+ RCCSEvaLeave = 0,
+
+ /*!
+ * \~chinese
+ 在扩展中展示客户主动评价按钮,离开客服不评价
+
+ * \~english
+ Show the customer active evaluation button in the expansion and leave the customer service without evaluation
+ */
+ RCCSEvaExtention = 1,
+
+ /*!
+ * \~chinese
+ 无评价入口
+
+ * \~english
+ No evaluation entrance
+ */
+ RCCSEvaNone = 2,
+
+ /*!
+ * \~chinese
+ 坐席结束会话评价
+
+ * \~english
+ Evaluation of the end of the conversation at the end of the seat
+ */
+ RCCSEvaCSEnd = 3,
+};
+
+/*!
+ * \~chinese
+ 客服留言类型
+
+ * \~english
+ Customer service message type
+ */
+typedef NS_ENUM(NSUInteger, RCCSLMType) {
+ /*!
+ * \~chinese
+ 本地 Native 页面留言
+
+ * \~english
+ Local Native page message
+ */
+ RCCSLMNative = 0,
+
+ /*!
+ * \~chinese
+ web 页面留言
+
+ * \~english
+ Web page message
+ */
+ RCCSLMWeb = 1,
+};
+
+/*!
+ * \~chinese
+ 客服问题解决状态
+
+ * \~english
+ Resolution status of customer service problem
+ */
+typedef NS_ENUM(NSUInteger, RCCSResolveStatus) {
+ /*!
+ * \~chinese
+ 未解决
+
+ * \~english
+ Unresolved
+ */
+ RCCSUnresolved = 0,
+
+ /*!
+ * \~chinese
+ 已解决
+
+ * \~english
+ Resolved
+ */
+ RCCSResolved = 1,
+
+ /*!
+ * \~chinese
+ 解决中
+
+ * \~english
+ Solving
+ */
+ RCCSResolving = 2,
+};
+
+/*!
+ * \~chinese
+ 客服评价类型
+
+ * \~english
+ Type of customer service evaluation
+ */
+typedef NS_ENUM(NSUInteger, RCCSEvaType) {
+ /*!
+ * \~chinese
+ 人工机器人分开评价
+
+ * \~english
+ Separate evaluation of manual and robot
+ */
+ RCCSEvaSeparately = 0,
+
+ /*!
+ * \~chinese
+ 人工机器人统一评价
+
+ * \~english
+ Unified evaluation of manual and robot
+ */
+ EVA_UNIFIED = 1,
+};
+
+#pragma mark RCLogLevel
+/*!
+ * \~chinese
+ 日志级别
+
+ * \~english
+ Log level
+ */
+typedef NS_ENUM(NSUInteger, RCLogLevel) {
+
+ /*!
+ * \~chinese
+ * 不输出任何日志
+
+ * \~english
+ * Do not output any logs
+ */
+ RC_Log_Level_None = 0,
+
+ /*!
+ * \~chinese
+ * 只输出错误的日志
+
+ * \~english
+ * Output only error logs
+ */
+ RC_Log_Level_Error = 1,
+
+ /*!
+ * \~chinese
+ * 输出错误和警告的日志
+
+ * \~english
+ * Output logs of errors and warnings
+ */
+ RC_Log_Level_Warn = 2,
+
+ /*!
+ * \~chinese
+ * 输出错误、警告和一般的日志
+
+ * \~english
+ * Output errors, warnings, and general logs
+ */
+ RC_Log_Level_Info = 3,
+
+ /*!
+ * \~chinese
+ * 输出输出错误、警告和一般的日志以及 debug 日志
+
+ * \~english
+ * Output errors, warnings and general logs as well as debug logs
+ */
+ RC_Log_Level_Debug = 4,
+
+ /*!
+ * \~chinese
+ * 输出所有日志
+
+ * \~english
+ * Output all logs
+ */
+ RC_Log_Level_Verbose = 5,
+};
+
+#pragma mark RCTimestampOrder
+/*!
+ * \~chinese
+ 时间戳顺序
+
+ * \~english
+ Timestamp Order
+ */
+typedef NS_ENUM(NSUInteger, RCTimestampOrder) {
+ /*!
+ * \~chinese
+ * 降序, 按照时间戳从大到小
+
+ * \~english
+ * Descending order, from large to small according to timestamp
+ */
+ RC_Timestamp_Desc = 0,
+
+ /*!
+ * \~chinese
+ * 升序, 按照时间戳从小到大
+
+ * \~english
+ * In ascending order, from small to large according to the timestamp
+ */
+ RC_Timestamp_Asc = 1,
+};
+
+#pragma mark RCPlatform
+/*!
+ * \~chinese
+ 在线平台
+
+ * \~english
+ Online platform
+ */
+typedef NS_ENUM(NSUInteger, RCPlatform) {
+ /*!
+ * \~chinese
+ 其它平台
+
+ * \~english
+ Other platforms
+ */
+ RCPlatform_Other = 0,
+
+ /*!
+ iOS
+ */
+ RCPlatform_iOS = 1,
+
+ /*!
+ Android
+ */
+ RCPlatform_Android = 2,
+
+ /*!
+ Web
+ */
+ RCPlatform_Web = 3,
+
+ /*!
+ PC
+ */
+ RCPlatform_PC = 4
+};
+
+#pragma mark RCPushLauguageType
+/*!
+ * \~chinese
+ push 语言设置
+
+ * \~english
+ Push language Settings
+ */
+typedef NS_ENUM(NSUInteger, RCPushLauguage) {
+ /*!
+ * \~chinese
+ 英文
+
+ * \~english
+ English
+ */
+ RCPushLauguage_EN_US = 1,
+ /*!
+ * \~chinese
+ 中文
+
+ * \~english
+ Chinese
+ */
+ RCPushLauguage_ZH_CN = 2,
+ /*!
+ * \~chinese
+ 阿拉伯文
+
+ * \~english
+ Arabic
+ */
+ RCPushLauguage_AR_SA
+};
+
+#endif
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCStatusMessage.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCStatusMessage.h
new file mode 100644
index 0000000..d02e03f
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCStatusMessage.h
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RCStatusMessage.h
+// Created by Heq.Shinoda on 14-6-13.
+
+#import "RCMessageContent.h"
+/**
+ * \~chinese
+ 状态消息的抽象基类,表示某种状态,不会存入消息历史记录。
+ 此类消息不保证一定到达接收方(但只是理论上存在丢失的可能),但是速度最快,所以通常用来传递状态信息。
+
+ * \~english
+ The abstract base class of a status message that represents a state and is not stored in the message history.
+ Such messages are not guaranteed to reach the receiver (but there is only the possibility of loss in theory), but they are the fastest, so they are usually used to convey status information.
+*/
+@interface RCStatusMessage : RCMessageContent
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTSMutableDictionary.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTSMutableDictionary.h
new file mode 100644
index 0000000..385a6e1
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTSMutableDictionary.h
@@ -0,0 +1,13 @@
+//
+// RCTSMutableDictionary.h
+// RongIMKit
+//
+// Created by RongCloud on 16/5/12.
+// Copyright © 2016 RongCloud. All rights reserved.
+//
+
+#import
+
+@interface RCTSMutableDictionary : NSMutableDictionary
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTagInfo.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTagInfo.h
new file mode 100644
index 0000000..cbca854
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTagInfo.h
@@ -0,0 +1,69 @@
+//
+// RCTagInfo.h
+// RongIMLib
+//
+// Created by RongCloud on 2021/1/27.
+// Copyright © 2021 RongCloud. All rights reserved.
+//
+
+#import
+/*!
+ * \~chinese
+ 标签信息
+
+ * \~english
+ Tag information
+ */
+@interface RCTagInfo : NSObject
+/*!
+ * \~chinese
+ 标签 ID
+
+ * \~english
+ tag ID
+ */
+@property (nonatomic, copy) NSString *tagId;
+
+/*!
+ * \~chinese
+ 标签名称
+
+ * \~english
+ Tag name
+ */
+@property (nonatomic, copy) NSString *tagName;
+
+/*!
+ * \~chinese
+ 该标签下的会话个数
+
+ * \~english
+ The number of conversations under this tag
+ */
+@property (nonatomic, assign) NSInteger count;
+
+/*!
+ * \~chinese
+ 标签创建时间
+
+ * \~english
+ Tag creation time
+ */
+@property (nonatomic, assign) long long timestamp;
+
+/*!
+ * \~chinese
+ RCTagInfo 初始化方法
+
+ @param tagId 标签 id
+ @param tagName 标签名称
+
+ * \~english
+ RCTagInfo initialization method.
+
+ @ param tagId tag id.
+ @ param tagName tag name.
+ */
+- (instancetype)initWithTagInfo:(NSString *)tagId
+ tagName:(NSString *)tagName;
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTagProtocol.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTagProtocol.h
new file mode 100644
index 0000000..6d85545
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTagProtocol.h
@@ -0,0 +1,47 @@
+//
+// RCTagProtocol.h
+// RongIMLib
+//
+// Created by RongCloud on 2021/1/27.
+// Copyright © 2021 RongCloud. All rights reserved.
+//
+
+#ifndef RCTagProtocol_h
+#define RCTagProtocol_h
+
+@protocol RCTagDelegate
+
+/*!
+ * \~chinese
+ 标签变化
+
+ @discussion 本端添加删除更新标签,不会触发不会触发此回调方法,在相关调用方法的 block 块直接回调
+
+ * \~english
+ Tag change.
+
+ @ discussion Local label addition, deletion and update will not trigger or trigger this callback method, which will be called back directly in the block of the relevant calling method.
+ */
+- (void)onTagChanged;
+
+@end
+
+
+@protocol RCConversationTagDelegate
+
+/*!
+ * \~chinese
+ 会话标签变化
+
+ @discussion 本端添加删除更新会话标签,不会触发此回调方法,在相关调用方法的 block 块直接回调
+
+ * \~english
+ Conversation tag change.
+
+ @ discussion Local addition, deletion and update of conversation tag will not trigger this callback method, and will be called back directly in the block of the relevant calling method.
+ */
+
+- (void)onConversationTagChanged;
+
+@end
+#endif /* RCTagProtocol_h */
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTextMessage.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTextMessage.h
new file mode 100644
index 0000000..99b16fe
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCTextMessage.h
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RCTextMessage.h
+// Created by Heq.Shinoda on 14-6-13.
+
+#import "RCMessageContent.h"
+
+/*!
+ * \~chinese
+ 文本消息的类型名
+
+ * \~english
+ The type name of the text message
+ */
+#define RCTextMessageTypeIdentifier @"RC:TxtMsg"
+
+/*!
+ * \~chinese
+ 文本消息类
+
+ @discussion 文本消息类,此消息会进行存储并计入未读消息数。
+
+ @remarks 内容类消息
+
+ * \~english
+ Text message class.
+
+ @ discussion Text message class, which is stored and counted as unread messages.
+
+ @ remarks content class message.
+ */
+@interface RCTextMessage : RCMessageContent
+
+/*!
+ * \~chinese
+ 文本消息的内容
+
+ * \~english
+ The content of a text message
+ */
+@property (nonatomic, copy) NSString *content;
+
+/*!
+ * \~chinese
+ 初始化文本消息
+
+ @param content 文本消息的内容
+ @return 文本消息对象
+
+ * \~english
+ Initialize text message.
+
+ @param content The content of a text message.
+ @ return text message object.
+ */
++ (instancetype)messageWithContent:(NSString *)content;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUnknownMessage.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUnknownMessage.h
new file mode 100644
index 0000000..35568da
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUnknownMessage.h
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RCUnknownMessage.h
+// Created by xugang on 15/1/24.
+
+#import "RCMessageContent.h"
+
+/*!
+ * \~chinese
+ 未知消息的类型名
+
+ * \~english
+ Type name of unknown message
+ */
+#define RCUnknownMessageTypeIdentifier @"RC:UnknownMsg"
+
+/*!
+ * \~chinese
+ 未知消息类
+
+ @discussion 所有未注册的消息类型,在 IMKit 中都会作为此类消息处理和显示。
+
+ * \~english
+ Unknown message class.
+
+ @ discussion All unregistered message types are processed and displayed as such messages in IMKit.
+ */
+@interface RCUnknownMessage : RCMessageContent
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUploadImageStatusListener.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUploadImageStatusListener.h
new file mode 100644
index 0000000..9860606
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUploadImageStatusListener.h
@@ -0,0 +1,90 @@
+//
+// RCUploadImageStatusListener.h
+// RongIMLib
+//
+// Created by litao on 15/8/28.
+// Copyright (c) 2015 RongCloud. All rights reserved.
+//
+
+#import "RCMessage.h"
+#import
+
+/*!
+ * \~chinese
+ 图片上传进度更新的IMKit监听
+
+ @discussion 此监听用于 IMKit 发送图片消息(上传到指定服务器)。
+ App 在上传图片时,需要在监听中调用 updateBlock、successBlock 与 errorBlock,通知 IMKit
+ SDK 当前上传图片的进度和状态,SDK 会更新 UI。
+
+ * \~english
+ IMKit listening of image upload progress update.
+
+ @ discussion This listening is used for IMKit to send image messages (uploaded to the specified server).
+ When uploading images, App shall call updateBlock, successBlock and errorBlock to notify IMKit SDK to upload the progress and status of the image during listening and SDK will update the UI.
+ */
+@interface RCUploadImageStatusListener : NSObject
+
+/*!
+ * \~chinese
+ 上传的图片消息的消息实体
+
+ * \~english
+ The message entity of the uploaded image message
+ */
+@property (nonatomic, strong) RCMessage *currentMessage;
+
+/*!
+ * \~chinese
+ 更新上传进度需要调用的 block [progress:当前上传的进度,0 <= progress < 100]
+
+ * \~english
+ The block that shall be called to update the upload progress [progress: current upload progress, 0 < = progress < 100].
+ */
+@property (nonatomic, strong) void (^updateBlock)(int progress);
+
+/*!
+ * \~chinese
+ 上传成功需要调用的 block [imageUrl:图片的网络 URL]
+
+ * \~english
+ Block to be called for successful upload [imageUrl:network URL of image]
+ */
+@property (nonatomic, strong) void (^successBlock)(NSString *imageUrl);
+
+/*!
+ * \~chinese
+ 上传成功需要调用的 block [errorCode:上传失败的错误码,非 0 整数]
+
+ * \~english
+ Block to be called for successful upload [errorCode: error code for failed upload, non-0 integer].
+ */
+@property (nonatomic, strong) void (^errorBlock)(RCErrorCode errorCode);
+
+/*!
+ * \~chinese
+ 初始化图片上传进度更新的IMKit监听
+
+ @param message 图片消息的消息实体
+ @param progressBlock 更新上传进度需要调用的 block
+ @param successBlock 上传成功需要调用的 block
+ @param errorBlock 上传失败需要调用的 block
+
+ @return 图片上传进度更新的 IMKit 监听对象
+
+ * \~english
+ Initialize IMKit listening for image upload progress updates.
+
+ @param message The message entity of the image message.
+ @param message The block that shall be called to update the upload progress.
+ @param message The block to be called for successful upload.
+ @param message The block that shall be called for upload failure.
+
+ @ return IMKit listener object for update of image upload progress.
+ */
+- (instancetype)initWithMessage:(RCMessage *)message
+ uploadProgress:(void (^)(int progress))progressBlock
+ uploadSuccess:(void (^)(NSString *imageUrl))successBlock
+ uploadError:(void (^)(RCErrorCode errorCode))errorBlock;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUploadMediaStatusListener.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUploadMediaStatusListener.h
new file mode 100644
index 0000000..b377ca0
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUploadMediaStatusListener.h
@@ -0,0 +1,146 @@
+//
+// RCUploadMediaStatusListener.h
+// RongIMLib
+//
+// Created by litao on 15/8/28.
+// Copyright (c) 2015 RongCloud. All rights reserved.
+//
+
+#import "RCMessage.h"
+#import
+
+/*!
+ * \~chinese
+ 媒体文件上传进度更新的 IMKit 监听
+
+ @discussion 此监听用于 IMKit 发送媒体文件消息(上传到指定服务器)。
+ App 在上传媒体文件时,需要在监听中调用 updateBlock、successBlock 与 errorBlock,通知 IMKit
+ SDK 当前上传媒体文件的进度和状态,SDK 会更新 UI。
+
+ * \~english
+ IMKit listening of media file upload progress updates.
+
+ @ discussion This listening is used for IMKit to send media file messages (uploaded to the specified server).
+ When uploading media files, App shall call updateBlock, successBlock and errorBlock to notify IMKit
+ SDK of the progress and status of the media file currently uploaded during listening and SDK will update the UI.
+ */
+@interface RCUploadMediaStatusListener : NSObject
+
+/*!
+ * \~chinese
+ 上传的媒体文件消息的消息实体
+
+ * \~english
+ The message entity of the uploaded media file message.
+ */
+@property (nonatomic, strong) RCMessage *currentMessage;
+
+/*!
+ * \~chinese
+ 更新上传进度需要调用的 block [progress:当前上传的进度,0 <= progress < 100]
+
+ * \~english
+ The block that shall be called to update the upload progress [progress: current upload progress, 0 < = progress < 100].
+ */
+@property (nonatomic, strong) void (^updateBlock)(int progress);
+
+/*!
+ * \~chinese
+ 上传成功需要调用的 block。
+ content:上传成功之后,需要发送的消息内容。
+ 您可以使用 currentMessage,把其中content属性对应的 url 字段设置成您上传成功的网络 URL。
+ 请参考下面代码。
+
+ 升级说明:如果您之前使用了此接口,请参考下面代码把参数从 url 替换成 message。
+ if ([currentMessage.content isKindOfClass:[RCImageMessage class]]) {
+ RCImageMessage *content = (RCImageMessage *)currentMessage.content;
+ content.imageUrl = remoteUrl;
+ successBlock(content);
+ } else if ([currentMessage.content isKindOfClass:[RCFileMessage class]]) {
+ RCFileMessage *content = (RCFilemessage *)currentMessage.content;
+ content.fileUrl = remoteUrl;
+ successBlock(content);
+ }
+
+ * \~english
+ The block that shall be called for successful upload.
+ The content of the message to be sent after the content: is uploaded successfully.
+ You can use currentMessage to set the url field corresponding to the content attribute to the network URL that you successfully upload.
+ Please refer to the following code.
+
+ Upgrade instructions: If you used this interface before, please refer to the following code to replace the parameter from url to message.
+ if ([currentMessage.content isKindOfClass:[RCImageMessage class]]) {
+ RCImageMessage *content = (RCImageMessage *)currentMessage.content;
+ content.imageUrl = remoteUrl;
+ successBlock(content);
+ } else if ([currentMessage.content isKindOfClass:[RCFileMessage class]]) {
+ RCFileMessage *content = (RCFilemessage *)currentMessage.content;
+ content.fileUrl = remoteUrl;
+ successBlock(content);
+ }
+ */
+@property (nonatomic, strong) void (^successBlock)(RCMessageContent *content);
+
+/*!
+ * \~chinese
+ 上传成功需要调用的 block [errorCode:上传失败的错误码,非 0 整数]
+
+ * \~english
+ Block to be called for successful upload [errorCode: error code for failed upload, non-0 integer].
+ */
+@property (nonatomic, strong) void (^errorBlock)(RCErrorCode errorCode);
+
+/*!
+ * \~chinese
+ 上传取消需要调用的 block
+
+ * \~english
+ The block that shall be called to cancel upload
+ */
+@property (nonatomic, strong) void (^cancelBlock)(void);
+
+/*!
+ * \~chinese
+ 初始化媒体文件上传进度更新的 IMKit 监听
+
+ @param message 媒体文件消息的消息实体
+ @param progressBlock 更新上传进度需要调用的 block
+ @param successBlock 上传成功需要调用的 block
+ @param errorBlock 上传失败需要调用的 block
+ @param cancelBlock 上传取消需要调用的 block( 如果未实现,传 nil 即可)
+
+ @return 媒体文件上传进度更新的 IMKit 监听对象
+
+ * \~english
+ Initialize IMKit listening for media file upload progress updates.
+
+ @param message The message entity of the media file message.
+ @param progressBlock The block that shall be called to update the upload progress.
+ @param successBlock Block to be called for successful upload.
+ @param errorBlock The block that shall be called for upload failure.
+ @param cancelBlock The block that shall be called to cancel upload (if it is not implemented, you can send it to nil).
+
+ @ return IMKit listener object for media file upload progress updates.
+ */
+- (instancetype)initWithMessage:(RCMessage *)message
+ uploadProgress:(void (^)(int progress))progressBlock
+ uploadSuccess:(void (^)(RCMessageContent *content))successBlock
+ uploadError:(void (^)(RCErrorCode errorCode))errorBlock
+ uploadCancel:(void (^)(void))cancelBlock;
+
+/*!
+ * \~chinese
+ 取消当前上传
+
+ @discussion 如果您实现取消正在上传的媒体消息功能,则必须实现此回调。
+ 您需要在取消成功之后,调用 cancelBlock 通知 SDK,SDK 会自动更新 UI。
+
+ * \~english
+ Cancel the current upload.
+
+ @ discussion If you implement the ability to cancel media messages being uploaded, you must implement this callback.
+ You shall call cancelBlock to notify SDK and SDK will update automatically UI after the cancellation is successful.
+ */
+- (void)cancelUpload;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserInfo.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserInfo.h
new file mode 100644
index 0000000..bbee08c
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserInfo.h
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RCUserInfo.h
+// Created by Heq.Shinoda on 14-6-16.
+
+#import
+
+/*!
+ * \~chinese
+ 用户信息类
+
+ * \~english
+ User information class
+ */
+@interface RCUserInfo : NSObject
+
+/*!
+ * \~chinese
+ 用户 ID
+
+ * \~english
+ User ID
+ */
+@property (nonatomic, copy) NSString *userId;
+
+/*!
+ * \~chinese
+ 用户名称
+
+ * \~english
+ User name
+ */
+@property (nonatomic, copy) NSString *name;
+
+/*!
+ * \~chinese
+ 用户头像的 URL
+
+ * \~english
+ The URL of the user's portrait
+ */
+@property (nonatomic, copy) NSString *portraitUri;
+
+/**
+ * \~chinese
+ 用户信息附加字段
+
+ * \~english
+ Additional fields of user information
+ */
+@property (nonatomic, copy) NSString *extra;
+
+/*!
+ * \~chinese
+ 用户信息的初始化方法
+
+ @param userId 用户 ID
+ @param username 用户名称
+ @param portrait 用户头像的 URL
+ @return 用户信息对象
+
+ * \~english
+ Initialization method of user information.
+
+ @param userId User ID.
+ @param username User name.
+ @param portrait The URL of the user's portrait.
+ @ return user Information object.
+ */
+- (instancetype)initWithUserId:(NSString *)userId name:(NSString *)username portrait:(NSString *)portrait;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserOnlineStatusInfo.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserOnlineStatusInfo.h
new file mode 100644
index 0000000..04a60c1
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserOnlineStatusInfo.h
@@ -0,0 +1,58 @@
+//
+// RCUserOnlineStatusInfo.h
+// RongIMLib
+//
+// Created by RongCloud on 16/9/26.
+// Copyright © 2016 RongCloud. All rights reserved.
+//
+
+#import "RCStatusDefine.h"
+#import
+
+/*!
+ * \~chinese
+ 用户在线状态
+
+ * \~english
+ User online status
+ */
+@interface RCUserOnlineStatusInfo : NSObject
+
+/*!
+ * \~chinese
+ 在线的平台
+
+ * \~english
+ Online platform
+*/
+@property (nonatomic, assign) RCPlatform platform;
+
+/*!
+ * \~chinese
+ 融云服务在线状态
+
+ @discussion 0 表示离线,1 表示在线
+
+ * \~english
+ Online status of financial cloud service.
+
+ @ discussion 0 means offline, 1 means online.
+ */
+@property (nonatomic, assign) int rcServiceStatus;
+
+/*!
+ * \~chinese
+ 用户自定义的在线状态(1 < customerStatus <= 255)
+
+ @discussion
+ 如果没有通过 RCIMClient 的 setUserOnlineStatus:success:error: 设置自定义的在线状态,默认的在线状态值为 1,若离线则为 0。
+
+ * \~english
+ User-defined presence status (1 < customerStatus < = 255).
+
+ @ discussion
+ If failed, perform setUserOnlineStatus:success:error: of RCIMClient. Set the custom online status. The default online status value is 1. if offline, it is 0.
+ */
+@property (nonatomic, assign) int customerStatus;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserTypingStatus.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserTypingStatus.h
new file mode 100644
index 0000000..5bbb7f0
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUserTypingStatus.h
@@ -0,0 +1,65 @@
+//
+// RCUserTypingStatus.h
+// RongIMLib
+//
+// Created by RongCloud on 16/1/8.
+// Copyright © 2016 RongCloud. All rights reserved.
+//
+
+#import
+
+/*!
+ * \~chinese
+ 用户输入状态类
+
+ * \~english
+ User input status class.
+ */
+@interface RCUserTypingStatus : NSObject
+
+/*!
+ * \~chinese
+ 当前正在输入的用户 ID
+
+ * \~english
+ The user ID that is currently being entered.
+ */
+@property (nonatomic, copy) NSString *userId;
+
+/*!
+ * \~chinese
+ 当前正在输入的消息类型名
+
+ @discussion
+ contentType 为用户当前正在编辑的消息类型名,即 RCMessageContent 中 getObjectName 的返回值。
+ 如文本消息,应该传类型名"RC:TxtMsg"。
+
+ * \~english
+ The name of the message type currently being entered.
+
+ @ discussion
+ ContentType is the name of the message type that the user is currently editing, that is, the return value of getObjectName in RCMessageContent.
+ E.g. for a text message, pass the type name "RC:TxtMsg".
+ */
+@property (nonatomic, copy) NSString *contentType;
+
+/*!
+ * \~chinese
+ 初始化用户输入状态对象
+
+ @param userId 当前正在输入的用户ID
+ @param objectName 当前正在输入的消息类型名
+
+ @return 用户输入状态对象
+
+ * \~english
+ Initialize user input status object.
+
+ @param userId The user ID that is currently being entered.
+ @param objectName The name of the message type currently being entered.
+
+ @ return user input status object.
+ */
+- (instancetype)initWithUserId:(NSString *)userId contentType:(NSString *)objectName;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUtilities.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUtilities.h
new file mode 100644
index 0000000..7035dc8
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCUtilities.h
@@ -0,0 +1,545 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RCUtilities.h
+// Created by Heq.Shinoda on 14-5-15.
+
+#ifndef __RCUtilities
+#define __RCUtilities
+
+#import "RCMessage.h"
+#import
+
+/*!
+ * \~chinese
+ 工具类
+
+ * \~english
+ Tool class
+ */
+@interface RCUtilities : NSObject
+
+/*!
+ * \~chinese
+ 将 base64 编码的字符串解码并转换为 NSData 数据
+
+ @param string base64 编码的字符串
+ @return 解码后的 NSData 数据
+
+ @discussion 此方法主要用于 iOS6 解码 base64。
+
+ * \~english
+ Decode and convert base64-encoded strings into NSData data.
+
+ @param string Base64 encoded string.
+ @ return decoded NSData data.
+
+ @ discussion This method is mainly used for iOS6 decoding base64.
+ */
++ (NSData *)dataWithBase64EncodedString:(NSString *)string;
+
+/*!
+ * \~chinese
+ 将 NSData 数据转化并编码为 base64 的字符串
+
+ @param data 未编码的 NSData 数据
+ @return 编码后的 base64 字符串
+
+ @discussion 此方法主要用于 iOS6 编码 base64。
+
+ * \~english
+ Convert and encode NSData data into base64 strings.
+
+ @param data Unencoded NSData data.
+ @ return encoded base64 string.
+
+ @ discussion This method is mainly used for iOS6 encoding base64.
+ */
++ (NSString *)base64EncodedStringFrom:(NSData *)data;
+
+/*!
+ * \~chinese
+ scaleImage
+
+ @param image image
+ @param scaleSize scaleSize
+
+ @return scaled image
+
+ * \~english
+ ScaleImage.
+
+ @param image Image.
+ @param scaleSize ScaleSize.
+
+ @ return scaled image.
+ */
++ (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize;
+
+/*!
+ * \~chinese
+ imageByScalingAndCropSize
+
+ @param image image
+ @param targetSize targetSize
+
+ @return image
+
+ * \~english
+ ImageByScalingAndCropSize.
+
+ @param image Image.
+ @param targetSize TarGetize.
+
+ @ return image.
+ */
++ (UIImage *)imageByScalingAndCropSize:(UIImage *)image targetSize:(CGSize)targetSize;
+
+/*!
+ * \~chinese
+根据配置压缩图片,如果设置了[RCCoreClient sharedCoreClient].imageCompressConfig ,就按照此设置进行压缩。如果没有设置,就按照RCConfigg.plis文件中的配置进行压缩。
+
+ @param image 原图片
+ @return 压缩后的图片
+
+ * \~english
+ Compress the image according to the configuration, and compress the image according to this setting if [RCCoreClient sharedCoreClient]. ImageCompressConfig, is set. If it is not set, compress it according to the configuration in the RCConfigg.plis file.
+
+ @param image Original image.
+ @ return compressed image.
+ */
++ (UIImage *)generateThumbnailByConfig:(UIImage *)image;
+
+/*!
+ generate thumbnail from image
+
+ @param image image
+ @param targetSize targetSize
+
+ @return image
+ */
++ (UIImage *)generateThumbnail:(UIImage *)image targetSize:(CGSize)targetSize;
+
+/*!
+ generate thumbnail from image
+
+ @param image image
+ @param targetSize targetSize
+ @param percent percent
+
+ @return image
+ */
++ (UIImage *)generateThumbnail:(UIImage *)image targetSize:(CGSize)targetSize percent:(CGFloat)percent;
+/*!
+ compressedImageWithMaxDataLength
+
+ @param image image
+ @param maxDataLength maxDataLength
+
+ @return nsdate
+ */
++ (NSData *)compressedImageWithMaxDataLength:(UIImage *)image maxDataLength:(CGFloat)maxDataLength;
+
+/*!
+ compressedImageAndScalingSize
+
+ @param image image
+ @param targetSize targetSize
+ @param maxDataLen maxDataLen
+
+ @return image nsdata
+ */
++ (NSData *)compressedImageAndScalingSize:(UIImage *)image targetSize:(CGSize)targetSize maxDataLen:(CGFloat)maxDataLen;
+
+/*!
+ compressedImageAndScalingSize
+
+ @param image image
+ @param targetSize targetSize
+ @param percent percent
+
+ @return image nsdata
+ */
++ (NSData *)compressedImageAndScalingSize:(UIImage *)image targetSize:(CGSize)targetSize percent:(CGFloat)percent;
+/*!
+ compressedImage
+
+ @param image image
+ @param percent percent
+
+ @return image nsdata
+ */
++ (NSData *)compressedImage:(UIImage *)image percent:(CGFloat)percent;
+
+/*!
+ * \~chinese
+ 获取文字显示的尺寸
+
+ @param text 文字
+ @param font 字体
+ @param constrainedSize 文字显示的容器大小
+
+ @return 文字显示的尺寸
+
+ @discussion 该方法在计算 iOS 7 以下系统显示的时候默认使用 NSLineBreakByTruncatingTail 模式。
+
+ * \~english
+ Get the size of the text display.
+
+ @param text Words.
+ @param font Font.
+ @param constrainedSize Container size for text display.
+
+ @ return The size of text display.
+
+ @ discussion This method uses NSLineBreakByTruncatingTail mode by default when the system display below iOS 7 is calculated.
+ */
++ (CGSize)getTextDrawingSize:(NSString *)text font:(UIFont *)font constrainedSize:(CGSize)constrainedSize;
+
+/*!
+ * \~chinese
+ 判断是否是本地路径
+
+ @param path 路径
+
+ @return 是否是本地路径
+
+ * \~english
+ Determine whether it is a local path.
+
+ @param path Path.
+
+ @ return Whether it is a local path.
+ */
++ (BOOL)isLocalPath:(NSString *)path;
+
+/*!
+ * \~chinese
+ 判断是否是网络地址
+
+ @param url 地址
+
+ @return 是否是网络地址
+
+ * \~english
+ Determine whether it is a network address.
+
+ @param url Address.
+
+ @ return Whether it is a network address.
+ */
++ (BOOL)isRemoteUrl:(NSString *)url;
+
+/*!
+ * \~chinese
+ 获取沙盒修正后的文件路径
+
+ @param localPath 本地路径
+
+ @return 修正后的文件路径
+
+ * \~english
+ Get the revised file path of sandboxes
+
+ @param localPath Local path.
+
+ @ return revised file path.
+ */
++ (NSString *)getCorrectedFilePath:(NSString *)localPath;
+
+/*!
+ * \~chinese
+ * 获取文件存储路径
+
+ * \~english
+ * Obtain the file storage path
+ */
++ (NSString *)getFileStoragePath;
+
+/*!
+ excludeBackupKeyForURL
+
+ @param storageURL storageURL
+
+ @return BOOL
+ */
++ (BOOL)excludeBackupKeyForURL:(NSURL *)storageURL;
+
+/*!
+ * \~chinese
+ 获取 App 的文件存放路径
+
+ @return App 的文件存放路径
+
+ * \~english
+ Get the file storage path of App.
+
+ @ return App's file storage path.
+ */
++ (NSString *)applicationDocumentsDirectory;
+
+/*!
+ * \~chinese
+ 获取融云 SDK 的文件存放路径
+
+ @return 融云 SDK 的文件存放路径
+
+ * \~english
+ Get the file storage path of the RongCloud SDK.
+
+ @ return the file storage path of RongCloud SDK.
+ */
++ (NSString *)rongDocumentsDirectory;
+
+/*!
+ * \~chinese
+ 获取融云 SDK 的缓存路径
+
+ @return 融云 SDK 的缓存路径
+
+ * \~english
+ Get the cache path of RongCloud SDK.
+
+ @ return the cache path of RongCloud SDK.
+ */
++ (NSString *)rongImageCacheDirectory;
+
+/*!
+ * \~chinese
+ 获取当前系统时间
+
+ @return 当前系统时间
+
+ * \~english
+ Get the current system time.
+
+ @ return current system time.
+ */
++ (NSString *)currentSystemTime;
+
+/*!
+ * \~chinese
+ 获取当前运营商名称
+
+ @return 当前运营商名称
+
+ * \~english
+ Get the current operator name.
+
+ @ return current operator name.
+ */
++ (NSString *)currentCarrier;
+
+/*!
+ * \~chinese
+ 获取当前网络类型
+
+ @return 当前网络类型
+
+ * \~english
+ Get the current network type.
+
+ @ return current network type.
+ */
++ (NSString *)currentNetWork;
+
+/*!
+ * \~chinese
+ 获取当前网络类型
+
+ @return 当前网络类型
+
+ * \~english
+ Get the current network type.
+
+ @ return current network type.
+ */
++ (NSString *)currentNetworkType;
+
+/*!
+ * \~chinese
+ 获取系统版本
+
+ @return 系统版本
+
+ * \~english
+ Get system version.
+
+ @ return system version.
+ */
++ (NSString *)currentSystemVersion;
+
+/*!
+ * \~chinese
+ 获取设备型号
+
+ @return 设备型号
+
+ * \~english
+ Get the device model.
+
+ @ return device model.
+ */
++ (NSString *)currentDeviceModel;
+
+/*!
+ * \~chinese
+ 获取非换行的字符串
+
+ @param originalString 原始的字符串
+
+ @return 非换行的字符串
+
+ @discussion 所有换行符将被替换成单个空格
+
+ * \~english
+ Get a string that is not a newline.
+
+ @param originalString Original string.
+
+ @ return non-newline string.
+
+ @ discussion All newline characters will be replaced with a single space.
+ */
++ (NSString *)getNowrapString:(NSString *)originalString;
+
+/**
+ * \~chinese
+ 获取消息类型对应的描述
+
+ @param mediaType 消息类型
+ @return 描述
+
+ * \~english
+ Get the description corresponding to the message type.
+
+ @param mediaType Message type.
+ @ return description.
+ */
++ (NSString *)getMediaTypeString:(RCMediaType)mediaType;
+
+/**
+ * \~chinese
+ 获取消息内容对应的媒体类型
+
+ @param content 消息内容
+ @return 媒体类型,如果是不支持的媒体类型或者消息,将返回 -1
+
+ * \~english
+ Get the media type corresponding to the message content.
+
+ @param content Message content.
+ @ return media type. If it is an unsupported media type or message,-1 will be returned.
+ */
++ (RCMediaType)getMediaType:(RCMessageContent *)content;
+
+/**
+ * \~chinese
+ 判断一张照片是否是含透明像素的照片
+
+ @param image 原始照片
+ @return 是否包含透明像素,YES 包含, NO 不包含
+
+ * \~english
+ Determine whether a image is a image with transparent pixels.
+
+ @param image Original image.
+ Whether @ return contains transparent pixels, YES does, and NO does not.
+ */
++ (BOOL)isOpaque:(UIImage *)image;
+
+/**
+ * \~chinese
+ URL 编码
+
+ @return 编码后的 URL
+
+ * \~english
+ URL coding.
+
+ @ return encoded URL.
+ */
++ (NSString *)encodeURL:(NSString *)url;
+
++ (NSData *)compressImage:(UIImage *)sourceImage;
+
+/**
+ * \~chinese
+ 检查字符串是否符合聊天室属性名称的格式
+
+ @param key 聊天室属性名称
+ @return 是否符合聊天室属性名称的格式,YES 符合, NO 不符合
+
+ @discussion Key 支持大小写英文字母、数字、部分特殊符号 + = - _ 的组合方式
+
+ * \~english
+ Check whether the string matches the format of the chat room attribute name.
+
+ @param key Chat room attribute name.
+ Whether @ return conforms to the format of chat room attribute names, YES does, but NO does not.
+
+ @ discussion Key supports the combination of uppercase and lowercase letters, numbers and some special symbols + =-_.
+ */
++ (BOOL)checkChatroomKey:(NSString *)key;
+
+/**
+ * \~chinese
+生成 22 位的 UUID
+
+@return 22 位的 UUID
+
+ * \~english
+ Generate 22-bit UUID.
+
+ @ return 22-bit UUID.
+*/
++ (NSString *)get22bBitUUID;
+
+/**
+ * \~chinese
+生成 UUID
+
+@return UUID
+
+ * \~english
+ Generate UUID.
+
+ @ return UUID.
+*/
++ (NSString *)getUUID;
+
+/**
+ * \~chinese
+生成 DeviceId
+
+@return DeviceId 连接改造使用的
+
+ * \~english
+ Generate DeviceId.
+
+ @ return DeviceId connection transformation.
+ */
++ (NSString *)getDeviceId:(NSString *)appKey;
+
+/**
+ * \~chinese
+获取手机型号
+
+@return 手机型号
+
+ * \~english
+ Get the phone model.
+
+ @ return mobile phone model
+ */
++ (NSString *)iphoneType;
+
+@end
+
+#endif
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCVoiceMessage.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCVoiceMessage.h
new file mode 100644
index 0000000..c8e1eec
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCVoiceMessage.h
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RCVoiceMessage.h
+// Created by Heq.Shinoda on 14-6-13.
+
+#import "RCMessageContent.h"
+
+/*!
+ * \~chinese
+ 语音消息的类型名
+
+ * \~english
+ The type name of the voice message
+ */
+#define RCVoiceMessageTypeIdentifier @"RC:VcMsg"
+
+/*!
+ * \~chinese
+ 语音消息类
+
+ @discussion 语音消息类,此消息会进行存储并计入未读消息数。
+
+ @remarks 内容类消息
+
+ * \~english
+ Voice message class.
+
+ @ discussion voice message class, which is stored and counted as unread messages.
+
+ @ remarks content class message.
+ */
+@interface RCVoiceMessage : RCMessageContent
+
+/*!
+ * \~chinese
+ wav 格式的音频数据
+
+ * \~english
+ Audio data in wav format.
+ */
+@property (nonatomic, strong) NSData *wavAudioData;
+
+/*!
+ * \~chinese
+ 语音消息的时长, 以秒为单位
+
+ * \~english
+ The duration of the voice message, in seconds.
+ */
+@property (nonatomic, assign) long duration;
+
+
+/*!
+ * \~chinese
+ 初始化语音消息
+
+ @param audioData wav格式的音频数据
+ @param duration 语音消息的时长,以秒为单位
+ @return 语音消息对象
+
+ @discussion
+ 如果您不是使用IMKit中的录音功能,则在初始化语音消息的时候,需要确保以下几点。
+ 1. audioData 必须是单声道的 wav 格式音频数据;
+ 2. audioData 的采样率必须是 8000Hz,采样位数(精度)必须为 16 位。
+
+ 您可以参考 IMKit 中的录音参数:
+ NSDictionary *settings = @{AVFormatIDKey: @(kAudioFormatLinearPCM),
+ AVSampleRateKey: @8000.00f,
+ AVNumberOfChannelsKey: @1,
+ AVLinearPCMBitDepthKey: @16,
+ AVLinearPCMIsNonInterleaved: @NO,
+ AVLinearPCMIsFloatKey: @NO,
+ AVLinearPCMIsBigEndianKey: @NO};
+
+ * \~english
+ Initialize voice messages.
+
+ @param audioData Audio data in wav format.
+ @param duration The duration of the voice message, in seconds.
+ @ return voice message object.
+
+ @ discussion
+ If you are not using the recording feature in IMKit, you shall ensure the following when initializing voice messages.
+ 1. AudioData must be mono wav format audio data.
+ 2. The sampling rate of audioData must be 8000Hz and the number of sampling bits (precision) must be 16 bits.
+
+ You can refer to the recording parameters in IMKit:
+ NSDictionary *settings = @{AVFormatIDKey: @(kAudioFormatLinearPCM),
+ AVSampleRateKey: @8000.00f,
+ AVNumberOfChannelsKey: @1,
+ AVLinearPCMBitDepthKey: @16,
+ AVLinearPCMIsNonInterleaved: @NO,
+ AVLinearPCMIsFloatKey: @NO,
+ AVLinearPCMIsBigEndianKey: @NO};
+ */
++ (instancetype)messageWithAudio:(NSData *)audioData duration:(long)duration;
+
+@end
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCWatchKitStatusDelegate.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCWatchKitStatusDelegate.h
new file mode 100644
index 0000000..364957f
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCWatchKitStatusDelegate.h
@@ -0,0 +1,272 @@
+//
+// RCWatchKitStatusDelegate.h
+// RongIMLib
+//
+// Created by litao on 15/6/4.
+// Copyright (c) 2015 RongCloud. All rights reserved.
+//
+
+#ifndef RongIMLib_RCwatchKitStatusDelegate_h
+#define RongIMLib_RCwatchKitStatusDelegate_h
+
+/*!
+ * \~chinese
+ 用于 Apple Watch 的 IMLib 事务监听器
+
+ @discussion 此协议定义了 IMLib 在状态变化和各种活动时的回调,主要用于 Apple
+ Watch。
+
+ * \~english
+ IMLib transaction listener for Apple Watch.
+
+ @ discussion This protocol defines the callback for IMLib in case of state changes and various activities, and is mainly used for Apple.
+ Watch .
+ */
+@protocol RCWatchKitStatusDelegate
+
+@optional
+
+#pragma mark Connection status
+/*!
+ * \~chinese
+ 连接状态发生变化的回调
+
+ @param status SDK 与融云服务器的连接状态
+
+ * \~english
+ Callback for a change in connection status.
+
+ @param status Connection status between SDK and CVM.
+ */
+- (void)notifyWatchKitConnectionStatusChanged:(RCConnectionStatus)status;
+
+#pragma mark Message Receive
+
+/*!
+ * \~chinese
+ 收到消息的回调
+
+ @param receivedMsg 收到的消息实体
+
+ * \~english
+ Callback for receiving message.
+
+ @param receivedMsg Received message entity.
+ */
+- (void)notifyWatchKitReceivedMessage:(RCMessage *)receivedMsg;
+
+/*!
+ * \~chinese
+ 向外发送消息的回调
+
+ @param message 待发送消息
+
+ * \~english
+ Callback for sending messages out.
+
+ @param message Message to be sent.
+ */
+- (void)notifyWatchKitSendMessage:(RCMessage *)message;
+
+/*!
+ * \~chinese
+ 发送消息完成的回调
+
+ @param messageId 消息 ID
+ @param status 完成的状态吗。0 表示成功,非 0 表示失败
+
+ * \~english
+ Callback for sending message completely
+
+ @param messageId Message ID.
+ @param status The state of completion. 0 indicates success, and non-0 indicates failure.
+ */
+- (void)notifyWatchKitSendMessageCompletion:(long)messageId status:(RCErrorCode)status;
+
+/*!
+ * \~chinese
+ 上传图片进度更新的回调
+
+ @param progress 进度
+ @param messageId 消息 ID
+
+ * \~english
+ Callback for progress update for uploading images.
+
+ @param progress Progress.
+ @param messageId Message ID.
+ */
+- (void)notifyWatchKitUploadFileProgress:(int)progress messageId:(long)messageId;
+
+#pragma mark Message & Conversation
+/*!
+ * \~chinese
+ 删除会话的回调
+
+ @param conversationTypeList 会话类型的数组
+
+ * \~english
+ Callback for deleting the conversation.
+
+ @param conversationTypeList An array of conversation types.
+ */
+- (void)notifyWatchKitClearConversations:(NSArray *)conversationTypeList;
+
+/*!
+ * \~chinese
+ 删除消息的回调
+
+ @param conversationType 会话类型
+ @param targetId 会话 ID
+
+ * \~english
+ Callback for deleting the message.
+
+ @param conversationType Conversation type
+ @param targetId Conversation ID.
+ */
+- (void)notifyWatchKitClearMessages:(RCConversationType)conversationType targetId:(NSString *)targetId;
+
+/*!
+ * \~chinese
+ 删除消息的回调
+
+ @param messageIds 消息 ID 的数组
+
+ * \~english
+ Callback for deleting the message.
+
+ @param messageIds Array of message ID.
+ */
+- (void)notifyWatchKitDeleteMessages:(NSArray *)messageIds;
+
+/*!
+ * \~chinese
+ 清除未读消息数的回调
+
+ @param conversationType 会话类型
+ @param targetId 会话 ID
+
+ * \~english
+ Callback for clearing the number of unread messages.
+
+ @param conversationType Conversation type
+ @param targetId Conversation ID.
+ */
+- (void)notifyWatchKitClearUnReadStatus:(RCConversationType)conversationType targetId:(NSString *)targetId;
+
+#pragma mark Discussion
+
+/*!
+ * \~chinese
+ 创建讨论组的回调
+
+ @param name 讨论组名称
+ @param userIdList 成员的用户 ID 列表
+
+ * \~english
+ Callback for creating a discussion group.
+
+ @param name Discussion Group name.
+ @param userIdList User ID list of members.
+ */
+- (void)notifyWatchKitCreateDiscussion:(NSString *)name userIdList:(NSArray *)userIdList;
+
+/*!
+ * \~chinese
+ 创建讨论组成功的回调
+
+ @param discussionId 讨论组的 ID
+
+ * \~english
+ Callback for creating a discussion group successfully
+
+ @param discussionId ID of the discussion group.
+ */
+- (void)notifyWatchKitCreateDiscussionSuccess:(NSString *)discussionId;
+
+/*!
+ * \~chinese
+ 创建讨论组失败
+
+ @param errorCode 创建失败的错误码
+
+ * \~english
+ Failed to create discussion group.
+
+ @param errorCode Create a failed error code.
+ */
+- (void)notifyWatchKitCreateDiscussionError:(RCErrorCode)errorCode;
+
+/*!
+ * \~chinese
+ 讨论组加人的回调
+
+ @param discussionId 讨论组的 ID
+ @param userIdList 添加成员的用户 ID 列表
+
+ @discussion 加人的结果可以通过 notifyWatchKitDiscussionOperationCompletion 获得。
+
+ * \~english
+ Callback for discussion group members.
+
+ @param discussionId ID of the discussion group.
+ @param userIdList ID list of users who add members.
+
+ @ discussion The added results can be obtained through notifyWatchKitDiscussionOperationCompletion.
+ */
+- (void)notifyWatchKitAddMemberToDiscussion:(NSString *)discussionId userIdList:(NSArray *)userIdList;
+
+/*!
+ * \~chinese
+ 讨论组踢人的回调
+
+ @param discussionId 讨论组 ID
+ @param userId 用户 ID
+
+ @discussion 踢人的结果可以通过 notifyWatchKitDiscussionOperationCompletion 获得。
+
+ * \~english
+ Callback for kicking in the discussion group.
+
+ @param discussionId Discussion group ID.
+ @param userId User ID.
+
+ @ discussion The result of kicking can be obtained through notifyWatchKitDiscussionOperationCompletion.
+ */
+- (void)notifyWatchKitRemoveMemberFromDiscussion:(NSString *)discussionId userId:(NSString *)userId;
+
+/*!
+ * \~chinese
+ 退出讨论组的回调
+
+ @param discussionId 讨论组 ID
+
+ @discussion 创建的结果可以通过 notifyWatchKitDiscussionOperationCompletion 获得。
+
+ * \~english
+ Callback for exiting the discussion group.
+
+ @param discussionId Discussion group ID.
+
+ @ discussion The results created can be obtained through notifyWatchKitDiscussionOperationCompletion.
+ */
+- (void)notifyWatchKitQuitDiscussion:(NSString *)discussionId;
+
+/*!
+ * \~chinese
+ 讨论组操作的回调。tag:100-邀请;101-踢人;102-退出。status:0 成功,非 0 失败
+
+ @param tag 讨论组的操作类型。100 为加人,101 为踢人,102 为退出
+ @param status 操作的结果。0表示成功,非0表示失败
+
+ * \~english
+ Callback for discussion group operation. Tag:100- invitation; 101-kick; 102-quit. Status:0 for success, non-zero for failure
+
+ @param tag The type of operation for the discussion group. 100 for joining, 101 for kicking and 102 for quitting.
+ @param status The result of the operation. 0 indicates success, and non-0 indicates failure.
+ */
+- (void)notifyWatchKitDiscussionOperationCompletion:(int)tag status:(RCErrorCode)status;
+
+@end
+#endif
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCiOSConfig.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCiOSConfig.h
new file mode 100644
index 0000000..3cc4a64
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RCiOSConfig.h
@@ -0,0 +1,63 @@
+//
+// RCiOSConfig.h
+// RongIMLib
+//
+// Created by RongCloud on 2020/9/17.
+// Copyright © 2020 RongCloud. All rights reserved.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface RCiOSConfig : NSObject
+
+/*!
+ * \~chinese
+ iOS 平台通知栏分组 ID
+ 相同的 thread-id 推送分为一组
+ iOS10 开始支持
+
+ * \~english
+ Group ID of iOS platform notification bar
+ The push with same thread-id is divided into a group.
+ IOS10 starts to support.
+ */
+@property (nonatomic, copy) NSString *threadId;
+
+/*!
+ * \~chinese
+ iOS 标识推送的类型
+ 如果不设置后台默认取消息类型字符串,如 RC:TxtMsg
+
+ * \~english
+ Type of pushed iOS identifier
+ If you do not set the background to take the message type string by default, such as RC:TxtMsg.
+ */
+@property (nonatomic, copy) NSString *category;
+
+/*!
+ * \~chinese
+ iOS 平台通知覆盖 ID
+ apnsCollapseId 相同时,新收到的通知会覆盖老的通知,最大 64 字节
+ iOS10 开始支持
+
+ * \~english
+ Overriding ID of iOS platform notification
+ When the apnsCollapseId is the same, the new notification will overwrite the old notification with maximum of 64 bytes.
+ iOS10 starts to support it
+ */
+@property (nonatomic, copy) NSString *apnsCollapseId;
+
+/*!
+ * \~chinese
+ iOS 富文本推送内容
+
+ * \~english
+ Content of pushed iOS rich text
+ */
+@property (nonatomic, copy) NSString *richMediaUri;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RongIMLibCore.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RongIMLibCore.h
new file mode 100644
index 0000000..a019146
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/RongIMLibCore.h
@@ -0,0 +1,90 @@
+/**
+ * Copyright (c) 2014-2015, RongCloud.
+ * All rights reserved.
+ *
+ * All the contents are the copyright of RongCloud Network Technology Co.Ltd.
+ * Unless otherwise credited. http://rongcloud.cn
+ *
+ */
+
+// RongIMLibCore.h
+// Created by xugang on 14/12/11.
+
+#import
+
+//! Project version number for RongIMLibCore.
+FOUNDATION_EXPORT double RongIMLibCoreVersionNumber;
+
+//! Project version string for RongIMLibCore.
+FOUNDATION_EXPORT const unsigned char RongIMLibCoreVersionString[];
+
+/// IMLib
+#import
+#import
+#import
+#import
+/// Conversation
+#import
+#import
+#import
+/// Message
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+/// Util
+#import
+#import
+#import
+#import
+#import
+
+/// Other
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+#import
+
+// log
+#import
+
+// Downlad
+#import
+#import
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/interf_dec.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/interf_dec.h
new file mode 100644
index 0000000..5edba0c
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/interf_dec.h
@@ -0,0 +1,34 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 2009 Martin Storsjo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#ifndef OPENCORE_AMRNB_INTERF_DEC_H
+#define OPENCORE_AMRNB_INTERF_DEC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void *Decoder_Interface_init(void);
+void Decoder_Interface_exit(void *state);
+void Decoder_Interface_Decode(void *state, const unsigned char *in, short *out, int bfi);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/interf_enc.h b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/interf_enc.h
new file mode 100644
index 0000000..781e2fe
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Headers/interf_enc.h
@@ -0,0 +1,50 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 2009 Martin Storsjo
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ * -------------------------------------------------------------------
+ */
+
+#ifndef OPENCORE_AMRNB_INTERF_ENC_H
+#define OPENCORE_AMRNB_INTERF_ENC_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef AMRNB_WRAPPER_INTERNAL
+/* Copied from enc/src/gsmamr_enc.h */
+enum Mode {
+ MR475 = 0, /* 4.75 kbps */
+ MR515, /* 5.15 kbps */
+ MR59, /* 5.90 kbps */
+ MR67, /* 6.70 kbps */
+ MR74, /* 7.40 kbps */
+ MR795, /* 7.95 kbps */
+ MR102, /* 10.2 kbps */
+ MR122, /* 12.2 kbps */
+ MRDTX, /* DTX */
+ N_MODES /* Not Used */
+};
+#endif
+
+void *Encoder_Interface_init(int dtx);
+void Encoder_Interface_exit(void *state);
+int Encoder_Interface_Encode(void *state, enum Mode mode, const short *speech, unsigned char *out, int forceSpeech);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Info.plist b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Info.plist
new file mode 100644
index 0000000..b5d0788
Binary files /dev/null and b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Info.plist differ
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Modules/module.modulemap b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Modules/module.modulemap
new file mode 100644
index 0000000..ee665e7
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/Modules/module.modulemap
@@ -0,0 +1,6 @@
+framework module RongIMLibCore {
+ umbrella header "RongIMLibCore.h"
+
+ export *
+ module * { export * }
+}
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/RongIMLibCore b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/RongIMLibCore
new file mode 100644
index 0000000..3f81ab3
Binary files /dev/null and b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/RongIMLibCore differ
diff --git a/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/_CodeSignature/CodeResources b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/_CodeSignature/CodeResources
new file mode 100644
index 0000000..bd9ce14
--- /dev/null
+++ b/nativeplugins/RongCloud-IM/ios/RongIMLibCore.xcframework/ios-arm64_armv7/RongIMLibCore.framework/_CodeSignature/CodeResources
@@ -0,0 +1,1092 @@
+
+
+