wangguolei

init

Too many changes to show.

To preserve performance only 10 of 10+ files are displayed.

  1 +//
  2 +// ImSDK.h
  3 +// ImSDK
  4 +//
  5 +// Created by bodeng on 24/3/15.
  6 +// Copyright (c) 2015 tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef ImSDK_ImSDK_h
  10 +#define ImSDK_ImSDK_h
  11 +
  12 +#import "TIMComm.h"
  13 +#import "TIMManager.h"
  14 +#import "TIMMessage.h"
  15 +#import "TIMConversation.h"
  16 +#import "TIMGroupManager.h"
  17 +#import "TIMCallback.h"
  18 +#import "TIMFriendshipManager.h"
  19 +#import "TIMErrorCode.h"
  20 +#import "TIMConversation+MsgExt.h"
  21 +#import "TIMManager+MsgExt.h"
  22 +#endif
  1 +//
  2 +// TIMCallback.h
  3 +// ImSDK
  4 +//
  5 +// Created by bodeng on 30/3/15.
  6 +// Copyright (c) 2015 tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef ImSDK_TIMCallback_h
  10 +#define ImSDK_TIMCallback_h
  11 +
  12 +#import "TIMComm.h"
  13 +
  14 +@class TIMMessage;
  15 +@class TIMGroupTipsElem;
  16 +@class TIMGroupInfo;
  17 +@class TIMSNSChangeInfo;
  18 +@class TIMFriendPendencyInfo;
  19 +
  20 +/**
  21 + * 连接通知回调
  22 + */
  23 +@protocol TIMConnListener <NSObject>
  24 +@optional
  25 +
  26 +/**
  27 + * 网络连接成功
  28 + */
  29 +- (void)onConnSucc;
  30 +
  31 +/**
  32 + * 网络连接失败
  33 + *
  34 + * @param code 错误码
  35 + * @param err 错误描述
  36 + */
  37 +- (void)onConnFailed:(int)code err:(NSString*)err;
  38 +
  39 +/**
  40 + * 网络连接断开(断线只是通知用户,不需要重新登录,重连以后会自动上线)
  41 + *
  42 + * @param code 错误码
  43 + * @param err 错误描述
  44 + */
  45 +- (void)onDisconnect:(int)code err:(NSString*)err;
  46 +
  47 +
  48 +/**
  49 + * 连接中
  50 + */
  51 +- (void)onConnecting;
  52 +
  53 +@end
  54 +
  55 +
  56 +/**
  57 + * 用户在线状态通知
  58 + */
  59 +@protocol TIMUserStatusListener <NSObject>
  60 +@optional
  61 +/**
  62 + * 踢下线通知
  63 + */
  64 +- (void)onForceOffline;
  65 +
  66 +/**
  67 + * 断线重连失败
  68 + */
  69 +- (void)onReConnFailed:(int)code err:(NSString*)err;
  70 +
  71 +/**
  72 + * 用户登录的userSig过期(用户需要重新获取userSig后登录)
  73 + */
  74 +- (void)onUserSigExpired;
  75 +@end
  76 +
  77 +/**
  78 + * 页面刷新接口(如有需要未读计数刷新,会话列表刷新等)
  79 + */
  80 +@protocol TIMRefreshListener <NSObject>
  81 +@optional
  82 +/**
  83 + * 刷新会话
  84 + */
  85 +- (void)onRefresh;
  86 +
  87 +/**
  88 + * 刷新部分会话
  89 + *
  90 + * @param conversations 会话(TIMConversation*)列表
  91 + */
  92 +- (void)onRefreshConversations:(NSArray<TIMConversation *>*)conversations;
  93 +@end
  94 +
  95 +/**
  96 + * 消息回调
  97 + */
  98 +@protocol TIMMessageListener <NSObject>
  99 +@optional
  100 +/**
  101 + * 新消息回调通知
  102 + *
  103 + * @param msgs 新消息列表,TIMMessage 类型数组
  104 + */
  105 +- (void)onNewMessage:(NSArray*)msgs;
  106 +@end
  107 +
  108 +@protocol TIMMessageReceiptListener <NSObject>
  109 +@optional
  110 +/**
  111 + * 收到了已读回执
  112 + *
  113 + * @param receipts 已读回执(TIMMessageReceipt*)列表
  114 + */
  115 +- (void) onRecvMessageReceipts:(NSArray*)receipts;
  116 +@end
  117 +
  118 +/**
  119 + * 消息修改回调
  120 + */
  121 +@protocol TIMMessageUpdateListener <NSObject>
  122 +@optional
  123 +/**
  124 + * 消息修改通知
  125 + *
  126 + * @param msgs 修改的消息列表,TIMMessage 类型数组
  127 + */
  128 +- (void)onMessageUpdate:(NSArray*) msgs;
  129 +@end
  130 +
  131 +
  132 +@protocol TIMMessageRevokeListener <NSObject>
  133 +@optional
  134 +/**
  135 + * 消息撤回通知
  136 + *
  137 + * @param locator 被撤回消息的标识
  138 + */
  139 +- (void)onRevokeMessage:(TIMMessageLocator*)locator;
  140 +
  141 +@end
  142 +
  143 +/**
  144 + * 上传进度回调
  145 + */
  146 +@protocol TIMUploadProgressListener <NSObject>
  147 +@optional
  148 +/**
  149 + * 上传进度回调
  150 + *
  151 + * @param msg 正在上传的消息
  152 + * @param elemidx 正在上传的elem的索引
  153 + * @param taskid 任务id
  154 + * @param progress 上传进度
  155 + */
  156 +- (void)onUploadProgressCallback:(TIMMessage*)msg elemidx:(uint32_t)elemidx taskid:(uint32_t)taskid progress:(uint32_t)progress;
  157 +@end
  158 +
  159 +/**
  160 + * 群事件通知回调
  161 + */
  162 +@protocol TIMGroupEventListener <NSObject>
  163 +@optional
  164 +/**
  165 + * 群tips回调
  166 + *
  167 + * @param elem 群tips消息
  168 + */
  169 +- (void)onGroupTipsEvent:(TIMGroupTipsElem*)elem;
  170 +@end
  171 +
  172 +/**
  173 + * 好友代理事件回调
  174 + */
  175 +@protocol TIMFriendshipListener <NSObject>
  176 +@optional
  177 +
  178 +/**
  179 + * 添加好友通知
  180 + *
  181 + * @param users 好友列表(NSString*)
  182 + */
  183 +- (void)onAddFriends:(NSArray*)users;
  184 +
  185 +/**
  186 + * 删除好友通知
  187 + *
  188 + * @param identifiers 用户id列表(NSString*)
  189 + */
  190 +- (void)onDelFriends:(NSArray*)identifiers;
  191 +
  192 +/**
  193 + * 好友资料更新通知
  194 + *
  195 + * @param profiles 资料列表(TIMSNSChangeInfo *)
  196 + */
  197 +- (void)onFriendProfileUpdate:(NSArray<TIMSNSChangeInfo *> *)profiles;
  198 +
  199 +/**
  200 + * 好友申请通知
  201 + *
  202 + * @param reqs 好友申请者id列表(TIMFriendPendencyInfo *)
  203 + */
  204 +- (void)onAddFriendReqs:(NSArray<TIMFriendPendencyInfo *> *)reqs;
  205 +
  206 +@end
  207 +
  208 +#endif
  1 +//
  2 +// TIMComm.h
  3 +// ImSDK
  4 +//
  5 +// Created by bodeng on 29/1/15.
  6 +// Copyright (c) 2015 tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef ImSDK_TIMComm_h
  10 +#define ImSDK_TIMComm_h
  11 +
  12 +#import <Foundation/Foundation.h>
  13 +
  14 +#define ERR_IMSDK_KICKED_BY_OTHERS 6208
  15 +
  16 +@protocol TIMConnListener;
  17 +@protocol TIMUserStatusListener;
  18 +@protocol TIMRefreshListener;
  19 +@protocol TIMMessageReceiptListener;
  20 +@protocol TIMMessageUpdateListener;
  21 +@protocol TIMMessageRevokeListener;
  22 +@protocol TIMUploadProgressListener;
  23 +@protocol TIMGroupEventListener;
  24 +@protocol TIMFriendshipListener;
  25 +//@protocol TIMGroupListener;
  26 +@class TIMMessage;
  27 +@class TIMImageElem;
  28 +@class TIMConversation;
  29 +@class TIMAPNSConfig;
  30 +@class TIMUserProfile;
  31 +@class TIMFriend;
  32 +@class TIMGroupInfoOption;
  33 +@class TIMGroupMemberInfoOption;
  34 +@class TIMFriendProfileOption;
  35 +@class TIMFriendResult;
  36 +@class TIMCheckFriendResult;
  37 +@class TIMGroupPendencyMeta;
  38 +@class TIMCreateGroupMemberInfo;
  39 +@class TIMSendToUsersDetailInfo;
  40 +@class TIMGroupInfo;
  41 +@class TIMGroupInfoResult;
  42 +@class TIMGroupMemberInfo;
  43 +@class TIMGroupPendencyItem;
  44 +
  45 +#pragma mark - 枚举类型
  46 +
  47 +/**
  48 + * 网络连接状态
  49 + */
  50 +typedef NS_ENUM(NSInteger, TIMNetworkStatus) {
  51 + /**
  52 + * 已连接
  53 + */
  54 + TIM_NETWORK_STATUS_CONNECTED = 1,
  55 + /**
  56 + * 链接断开
  57 + */
  58 + TIM_NETWORK_STATUS_DISCONNECTED = 2,
  59 +};
  60 +
  61 +
  62 +/**
  63 + * 日志级别
  64 + */
  65 +typedef NS_ENUM(NSInteger, TIMLogLevel) {
  66 + /**
  67 + * 不输出任何 sdk log
  68 + */
  69 + TIM_LOG_NONE = 0,
  70 + /**
  71 + * 输出 DEBUG,INFO,WARNING,ERROR 级别的 log
  72 + */
  73 + TIM_LOG_DEBUG = 3,
  74 + /**
  75 + * 输出 INFO,WARNING,ERROR 级别的 log
  76 + */
  77 + TIM_LOG_INFO = 4,
  78 + /**
  79 + * 输出 WARNING,ERROR 级别的 log
  80 + */
  81 + TIM_LOG_WARN = 5,
  82 + /**
  83 + * 输出 ERROR 级别的 log
  84 + */
  85 + TIM_LOG_ERROR = 6,
  86 +};
  87 +
  88 +/**
  89 + * 会话类型:
  90 + * C2C 双人聊天
  91 + * GROUP 群聊
  92 + */
  93 +typedef NS_ENUM(NSInteger, TIMConversationType) {
  94 + /**
  95 + * C2C 类型
  96 + */
  97 + TIM_C2C = 1,
  98 +
  99 + /**
  100 + * 群聊 类型
  101 + */
  102 + TIM_GROUP = 2,
  103 +
  104 + /**
  105 + * 系统消息
  106 + */
  107 + TIM_SYSTEM = 3,
  108 +};
  109 +
  110 +/**
  111 + * 消息状态
  112 + */
  113 +typedef NS_ENUM(NSInteger, TIMMessageStatus){
  114 + /**
  115 + * 消息发送中
  116 + */
  117 + TIM_MSG_STATUS_SENDING = 1,
  118 + /**
  119 + * 消息发送成功
  120 + */
  121 + TIM_MSG_STATUS_SEND_SUCC = 2,
  122 + /**
  123 + * 消息发送失败
  124 + */
  125 + TIM_MSG_STATUS_SEND_FAIL = 3,
  126 + /**
  127 + * 消息被删除
  128 + */
  129 + TIM_MSG_STATUS_HAS_DELETED = 4,
  130 + /**
  131 + * 导入到本地的消息
  132 + */
  133 + TIM_MSG_STATUS_LOCAL_STORED = 5,
  134 + /**
  135 + * 被撤销的消息
  136 + */
  137 + TIM_MSG_STATUS_LOCAL_REVOKED = 6,
  138 +};
  139 +
  140 +/**
  141 + * 消息优先级标识
  142 + */
  143 +typedef NS_ENUM(NSInteger, TIMMessagePriority) {
  144 + /**
  145 + * 高优先级,一般为红包或者礼物消息
  146 + */
  147 + TIM_MSG_PRIORITY_HIGH = 1,
  148 + /**
  149 + * 普通优先级,普通消息
  150 + */
  151 + TIM_MSG_PRIORITY_NORMAL = 2,
  152 + /**
  153 + * 低优先级,一般为点赞消息
  154 + */
  155 + TIM_MSG_PRIORITY_LOW = 3,
  156 + /**
  157 + * 最低优先级,一般为后台下发的成员进退群通知
  158 + */
  159 + TIM_MSG_PRIORITY_LOWEST = 4,
  160 +};
  161 +
  162 +/**
  163 + * 图片压缩选项
  164 + */
  165 +typedef NS_ENUM(NSInteger, TIM_IMAGE_COMPRESS_TYPE){
  166 + /**
  167 + * 原图(不压缩)
  168 + */
  169 + TIM_IMAGE_COMPRESS_ORIGIN = 0x00,
  170 + /**
  171 + * 高压缩率:图片较小,默认值
  172 + */
  173 + TIM_IMAGE_COMPRESS_HIGH = 0x01,
  174 + /**
  175 + * 低压缩:高清图发送(图片较大)
  176 + */
  177 + TIM_IMAGE_COMPRESS_LOW = 0x02,
  178 +};
  179 +
  180 +/**
  181 + * 图片类型
  182 + */
  183 +typedef NS_ENUM(NSInteger, TIM_IMAGE_TYPE){
  184 + /**
  185 + * 原图
  186 + */
  187 + TIM_IMAGE_TYPE_ORIGIN = 0x01,
  188 + /**
  189 + * 缩略图
  190 + */
  191 + TIM_IMAGE_TYPE_THUMB = 0x02,
  192 + /**
  193 + * 大图
  194 + */
  195 + TIM_IMAGE_TYPE_LARGE = 0x04,
  196 +};
  197 +
  198 +/**
  199 + * 图片格式
  200 + */
  201 +typedef NS_ENUM(NSInteger, TIM_IMAGE_FORMAT){
  202 + /**
  203 + * JPG 格式
  204 + */
  205 + TIM_IMAGE_FORMAT_JPG = 0x1,
  206 + /**
  207 + * GIF 格式
  208 + */
  209 + TIM_IMAGE_FORMAT_GIF = 0x2,
  210 + /**
  211 + * PNG 格式
  212 + */
  213 + TIM_IMAGE_FORMAT_PNG = 0x3,
  214 + /**
  215 + * BMP 格式
  216 + */
  217 + TIM_IMAGE_FORMAT_BMP = 0x4,
  218 + /**
  219 + * 未知格式
  220 + */
  221 + TIM_IMAGE_FORMAT_UNKNOWN = 0xff,
  222 +};
  223 +
  224 +/**
  225 + * 登录状态
  226 + */
  227 +typedef NS_ENUM(NSInteger, TIMLoginStatus) {
  228 + /**
  229 + * 已登录
  230 + */
  231 + TIM_STATUS_LOGINED = 1,
  232 +
  233 + /**
  234 + * 登录中
  235 + */
  236 + TIM_STATUS_LOGINING = 2,
  237 +
  238 + /**
  239 + * 无登录
  240 + */
  241 + TIM_STATUS_LOGOUT = 3,
  242 +};
  243 +
  244 +/**
  245 + * 推送规则
  246 + */
  247 +typedef NS_ENUM(NSInteger, TIMOfflinePushFlag) {
  248 + /**
  249 + * 按照默认规则进行推送
  250 + */
  251 + TIM_OFFLINE_PUSH_DEFAULT = 0,
  252 + /**
  253 + * 不进行推送
  254 + */
  255 + TIM_OFFLINE_PUSH_NO_PUSH = 1,
  256 +};
  257 +
  258 +/**
  259 + * 安卓离线推送模式
  260 + */
  261 +typedef NS_ENUM(NSInteger, TIMAndroidOfflinePushNotifyMode) {
  262 + /**
  263 + * 通知栏消息
  264 + */
  265 + TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_NOTIFICATION = 0x00,
  266 + /**
  267 + * 不弹窗,由应用自行处理
  268 + */
  269 + TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_CUSTOM = 0x01,
  270 +};
  271 +
  272 +/**
  273 + * 群组成员是否可见
  274 + */
  275 +typedef NS_ENUM(NSInteger, TIMGroupMemberVisibleType) {
  276 + /**
  277 + * 未知
  278 + */
  279 + TIM_GROUP_MEMBER_VISIBLE_UNKNOWN = 0x00,
  280 + /**
  281 + * 群组成员不可见
  282 + */
  283 + TIM_GROUP_MEMBER_VISIBLE_NO = 0x01,
  284 + /**
  285 + * 群组成员可见
  286 + */
  287 + TIM_GROUP_MEMBER_VISIBLE_YES = 0x02,
  288 +};
  289 +
  290 +/**
  291 + * 群组是否能被搜到
  292 + */
  293 +typedef NS_ENUM(NSInteger, TIMGroupSearchableType) {
  294 + /**
  295 + * 未知
  296 + */
  297 + TIM_GROUP_SEARCHABLE_UNKNOWN = 0x00,
  298 + /**
  299 + * 群组不能被搜到
  300 + */
  301 + TIM_GROUP_SEARCHABLE_NO = 0x01,
  302 + /**
  303 + * 群组能被搜到
  304 + */
  305 + TIM_GROUP_SEARCHABLE_YES = 0x02,
  306 +};
  307 +
  308 +/**
  309 + * 加群选项
  310 + */
  311 +typedef NS_ENUM(NSInteger, TIMGroupAddOpt) {
  312 + /**
  313 + * 禁止加群
  314 + */
  315 + TIM_GROUP_ADD_FORBID = 0,
  316 +
  317 + /**
  318 + * 需要管理员审批
  319 + */
  320 + TIM_GROUP_ADD_AUTH = 1,
  321 +
  322 + /**
  323 + * 任何人可以加入
  324 + */
  325 + TIM_GROUP_ADD_ANY = 2,
  326 +};
  327 +
  328 +/**
  329 + * 群组提示类型
  330 + */
  331 +typedef NS_ENUM(NSInteger, TIMGroupTipsType){
  332 + /**
  333 + * 成员加入
  334 + */
  335 + TIM_GROUP_TIPS_JOIN = 1,
  336 + /**
  337 + * 成员离开
  338 + */
  339 + TIM_GROUP_TIPS_QUIT = 2,
  340 + /**
  341 + * 成员被踢
  342 + */
  343 + TIM_GROUP_TIPS_KICK = 3,
  344 + /**
  345 + * 成员设置管理员
  346 + */
  347 + TIM_GROUP_TIPS_SET_ADMIN = 4,
  348 + /**
  349 + * 成员取消管理员
  350 + */
  351 + TIM_GROUP_TIPS_CANCEL_ADMIN = 5,
  352 +};
  353 +
  354 +/**
  355 + * 群消息接受选项
  356 + */
  357 +typedef NS_ENUM(NSInteger, TIMGroupReceiveMessageOpt) {
  358 + /**
  359 + * 接收消息
  360 + */
  361 + TIM_GROUP_RECEIVE_MESSAGE = 0,
  362 + /**
  363 + * 不接收消息,服务器不进行转发
  364 + */
  365 + TIM_GROUP_NOT_RECEIVE_MESSAGE = 1,
  366 + /**
  367 + * 接受消息,不进行 iOS APNs 推送
  368 + */
  369 + TIM_GROUP_RECEIVE_NOT_NOTIFY_MESSAGE = 2,
  370 +};
  371 +
  372 +/**
  373 + * 群 Tips 类型
  374 + */
  375 +typedef NS_ENUM(NSInteger, TIM_GROUP_TIPS_TYPE){
  376 + /**
  377 + * 邀请加入群 (opUser & groupName & userList)
  378 + */
  379 + TIM_GROUP_TIPS_TYPE_INVITE = 0x01,
  380 + /**
  381 + * 退出群 (opUser & groupName & userList)
  382 + */
  383 + TIM_GROUP_TIPS_TYPE_QUIT_GRP = 0x02,
  384 + /**
  385 + * 踢出群 (opUser & groupName & userList)
  386 + */
  387 + TIM_GROUP_TIPS_TYPE_KICKED = 0x03,
  388 + /**
  389 + * 设置管理员 (opUser & groupName & userList)
  390 + */
  391 + TIM_GROUP_TIPS_TYPE_SET_ADMIN = 0x04,
  392 + /**
  393 + * 取消管理员 (opUser & groupName & userList)
  394 + */
  395 + TIM_GROUP_TIPS_TYPE_CANCEL_ADMIN = 0x05,
  396 + /**
  397 + * 群资料变更 (opUser & groupName & introduction & notification & faceUrl & owner)
  398 + */
  399 + TIM_GROUP_TIPS_TYPE_INFO_CHANGE = 0x06,
  400 + /**
  401 + * 群成员资料变更 (opUser & groupName & memberInfoList)
  402 + */
  403 + TIM_GROUP_TIPS_TYPE_MEMBER_INFO_CHANGE = 0x07,
  404 +};
  405 +
  406 +/**
  407 + * 群变更信息 Tips 类型
  408 + */
  409 +typedef NS_ENUM(NSInteger, TIM_GROUP_INFO_CHANGE_TYPE){
  410 + /**
  411 + * 群名修改
  412 + */
  413 + TIM_GROUP_INFO_CHANGE_GROUP_NAME = 0x01,
  414 + /**
  415 + * 群简介修改
  416 + */
  417 + TIM_GROUP_INFO_CHANGE_GROUP_INTRODUCTION = 0x02,
  418 + /**
  419 + * 群公告修改
  420 + */
  421 + TIM_GROUP_INFO_CHANGE_GROUP_NOTIFICATION = 0x03,
  422 + /**
  423 + * 群头像修改
  424 + */
  425 + TIM_GROUP_INFO_CHANGE_GROUP_FACE = 0x04,
  426 + /**
  427 + * 群主变更
  428 + */
  429 + TIM_GROUP_INFO_CHANGE_GROUP_OWNER = 0x05,
  430 + /**
  431 + * 群自定义字段变更
  432 + */
  433 + TIM_GROUP_INFO_CHANGE_GROUP_CUSTOM = 0x06,
  434 +};
  435 +
  436 +/**
  437 + * 群系统消息类型
  438 + */
  439 +typedef NS_ENUM(NSInteger, TIM_GROUP_SYSTEM_TYPE){
  440 + /**
  441 + * 申请加群请求(只有管理员会收到)
  442 + */
  443 + TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE = 0x01,
  444 + /**
  445 + * 申请加群被同意(只有申请人能够收到)
  446 + */
  447 + TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE = 0x02,
  448 + /**
  449 + * 申请加群被拒绝(只有申请人能够收到)
  450 + */
  451 + TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE = 0x03,
  452 + /**
  453 + * 被管理员踢出群(只有被踢的人能够收到)
  454 + */
  455 + TIM_GROUP_SYSTEM_KICK_OFF_FROM_GROUP_TYPE = 0x04,
  456 + /**
  457 + * 群被解散(全员能够收到)
  458 + */
  459 + TIM_GROUP_SYSTEM_DELETE_GROUP_TYPE = 0x05,
  460 + /**
  461 + * 创建群消息(创建者能够收到)
  462 + */
  463 + TIM_GROUP_SYSTEM_CREATE_GROUP_TYPE = 0x06,
  464 + /**
  465 + * 邀请入群通知(被邀请者能够收到)
  466 + */
  467 + TIM_GROUP_SYSTEM_INVITED_TO_GROUP_TYPE = 0x07,
  468 + /**
  469 + * 主动退群(主动退群者能够收到)
  470 + */
  471 + TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE = 0x08,
  472 + /**
  473 + * 设置管理员(被设置者接收)
  474 + */
  475 + TIM_GROUP_SYSTEM_GRANT_ADMIN_TYPE = 0x09,
  476 + /**
  477 + * 取消管理员(被取消者接收)
  478 + */
  479 + TIM_GROUP_SYSTEM_CANCEL_ADMIN_TYPE = 0x0a,
  480 + /**
  481 + * 群已被回收(全员接收)
  482 + */
  483 + TIM_GROUP_SYSTEM_REVOKE_GROUP_TYPE = 0x0b,
  484 + /**
  485 + * 邀请入群请求(被邀请者接收)
  486 + */
  487 + TIM_GROUP_SYSTEM_INVITE_TO_GROUP_REQUEST_TYPE = 0x0c,
  488 + /**
  489 + * 邀请加群被同意(只有发出邀请者会接收到)
  490 + */
  491 + TIM_GROUP_SYSTEM_INVITE_TO_GROUP_ACCEPT_TYPE = 0x0d,
  492 + /**
  493 + * 邀请加群被拒绝(只有发出邀请者会接收到)
  494 + */
  495 + TIM_GROUP_SYSTEM_INVITE_TO_GROUP_REFUSE_TYPE = 0x0e,
  496 + /**
  497 + * 用户自定义通知(默认全员接收)
  498 + */
  499 + TIM_GROUP_SYSTEM_CUSTOM_INFO = 0xff,
  500 +};
  501 +
  502 +/**
  503 + * 群成员角色
  504 + */
  505 +typedef NS_ENUM(NSInteger, TIMGroupMemberRole) {
  506 + /**
  507 + * 未定义(没有获取该字段)
  508 + */
  509 + TIM_GROUP_MEMBER_UNDEFINED = 0,
  510 +
  511 + /**
  512 + * 群成员
  513 + */
  514 + TIM_GROUP_MEMBER_ROLE_MEMBER = 200,
  515 +
  516 + /**
  517 + * 群管理员
  518 + */
  519 + TIM_GROUP_MEMBER_ROLE_ADMIN = 300,
  520 +
  521 + /**
  522 + * 群主
  523 + */
  524 + TIM_GROUP_MEMBER_ROLE_SUPER = 400,
  525 +};
  526 +
  527 +/**
  528 + * 群基本获取资料标志
  529 + */
  530 +typedef NS_ENUM(NSInteger, TIMGetGroupBaseInfoFlag) {
  531 + /**
  532 + * 不获取群组资料
  533 + */
  534 + TIM_GET_GROUP_BASE_INFO_FLAG_NONE = 0x00,
  535 + /**
  536 + * 获取群组名
  537 + */
  538 + TIM_GET_GROUP_BASE_INFO_FLAG_NAME = 0x01,
  539 + /**
  540 + * 获取创建时间
  541 + */
  542 + TIM_GET_GROUP_BASE_INFO_FLAG_CREATE_TIME = 0x01 << 1,
  543 + /**
  544 + * 获取群主id
  545 + */
  546 + TIM_GET_GROUP_BASE_INFO_FLAG_OWNER_UIN = 0x01 << 2,
  547 + /**
  548 + * (不可用)
  549 + */
  550 + TIM_GET_GROUP_BASE_INFO_FLAG_SEQ = 0x01 << 3,
  551 + /**
  552 + * 获取最近一次修改群信息时间
  553 + */
  554 + TIM_GET_GROUP_BASE_INFO_FLAG_TIME = 0x01 << 4,
  555 + /**
  556 + * (不可用)
  557 + */
  558 + TIM_GET_GROUP_BASE_INFO_FLAG_NEXT_MSG_SEQ = 0x01 << 5,
  559 + /**
  560 + * 获取最近一次发消息时间
  561 + */
  562 + TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG_TIME = 0x01 << 6,
  563 + /**
  564 + * (不可用)
  565 + */
  566 + TIM_GET_GROUP_BASE_INFO_FLAG_APP_ID = 0x01 << 7,
  567 + /**
  568 + * 获取群成员数量
  569 + */
  570 + TIM_GET_GROUP_BASE_INFO_FLAG_MEMBER_NUM = 0x01 << 8,
  571 + /**
  572 + * 获取最大群成员数量
  573 + */
  574 + TIM_GET_GROUP_BASE_INFO_FLAG_MAX_MEMBER_NUM = 0x01 << 9,
  575 + /**
  576 + * 获取群公告
  577 + */
  578 + TIM_GET_GROUP_BASE_INFO_FLAG_NOTIFICATION = 0x01 << 10,
  579 + /**
  580 + * 获取群简介
  581 + */
  582 + TIM_GET_GROUP_BASE_INFO_FLAG_INTRODUCTION = 0x01 << 11,
  583 + /**
  584 + * 获取群头像
  585 + */
  586 + TIM_GET_GROUP_BASE_INFO_FLAG_FACE_URL = 0x01 << 12,
  587 + /**
  588 + * 获取入群类型
  589 + */
  590 + TIM_GET_GROUP_BASE_INFO_FLAG_ADD_OPTION = 0x01 << 13,
  591 + /**
  592 + * 获取群组类型
  593 + */
  594 + TIM_GET_GROUP_BASE_INFO_FLAG_GROUP_TYPE = 0x01 << 14,
  595 + /**
  596 + * 获取最后一条群消息
  597 + */
  598 + TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG = 0x01 << 15,
  599 + /**
  600 + * 获取在线人数
  601 + */
  602 + TIM_GET_GROUP_BASE_INFO_FLAG_ONLINE_NUM = 0x01 << 16,
  603 + /**
  604 + * 获取群成员是否可见标志
  605 + */
  606 + TIM_GET_GROUP_BASE_INFO_VISIBLE = 0x01 << 17,
  607 + /**
  608 + * 获取群是否能被搜到标志
  609 + */
  610 + TIM_GET_GROUP_BASE_INFO_SEARCHABLE = 0x01 << 18,
  611 + /**
  612 + * 获取群全员禁言时间
  613 + */
  614 + TIM_GET_GROUP_BASE_INFO_ALL_SHUTUP = 0x01 << 19
  615 +};
  616 +
  617 +/**
  618 + * 群成员角色过滤方式
  619 + */
  620 +typedef NS_ENUM(NSInteger, TIMGroupMemberFilter) {
  621 + /**
  622 + * 全部成员
  623 + */
  624 + TIM_GROUP_MEMBER_FILTER_ALL = 0x00,
  625 + /**
  626 + * 群主
  627 + */
  628 + TIM_GROUP_MEMBER_FILTER_SUPER = 0x01,
  629 + /**
  630 + * 管理员
  631 + */
  632 + TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02,
  633 + /**
  634 + * 普通成员
  635 + */
  636 + TIM_GROUP_MEMBER_FILTER_COMMON = 0x04,
  637 +};
  638 +
  639 +/**
  640 + * 群成员获取资料标志
  641 + */
  642 +typedef NS_ENUM(NSInteger, TIMGetGroupMemInfoFlag) {
  643 +
  644 + /**
  645 + * 入群时间
  646 + */
  647 + TIM_GET_GROUP_MEM_INFO_FLAG_JOIN_TIME = 0x01,
  648 + /**
  649 + * 消息标志
  650 + */
  651 + TIM_GET_GROUP_MEM_INFO_FLAG_MSG_FLAG = 0x01 << 1,
  652 + /**
  653 + * 角色
  654 + */
  655 + TIM_GET_GROUP_MEM_INFO_FLAG_ROLE_INFO = 0x01 << 3,
  656 + /**
  657 + * 禁言时间
  658 + */
  659 + TIM_GET_GROUP_MEM_INFO_FLAG_SHUTUP_TIME = 0x01 << 4,
  660 + /**
  661 + * 群名片
  662 + */
  663 + TIM_GET_GROUP_MEM_INFO_FLAG_NAME_CARD = 0x01 << 5,
  664 +};
  665 +
  666 +/**
  667 + * 群组操作结果
  668 + */
  669 +typedef NS_ENUM(NSInteger, TIMGroupMemberStatus) {
  670 + /**
  671 + * 操作失败
  672 + */
  673 + TIM_GROUP_MEMBER_STATUS_FAIL = 0,
  674 +
  675 + /**
  676 + * 操作成功
  677 + */
  678 + TIM_GROUP_MEMBER_STATUS_SUCC = 1,
  679 +
  680 + /**
  681 + * 无效操作,加群时已经是群成员,移除群组时不在群内
  682 + */
  683 + TIM_GROUP_MEMBER_STATUS_INVALID = 2,
  684 +
  685 + /**
  686 + * 等待处理,邀请入群时等待对方处理
  687 + */
  688 + TIM_GROUP_MEMBER_STATUS_PENDING = 3,
  689 +};
  690 +
  691 +/**
  692 + * 群组未决请求类型
  693 + */
  694 +typedef NS_ENUM(NSInteger, TIMGroupPendencyGetType) {
  695 + /**
  696 + * 申请入群
  697 + */
  698 + TIM_GROUP_PENDENCY_GET_TYPE_JOIN = 0x0,
  699 + /**
  700 + * 邀请入群
  701 + */
  702 + TIM_GROUP_PENDENCY_GET_TYPE_INVITE = 0x1,
  703 +};
  704 +
  705 +/**
  706 + * 群组已决标志
  707 + */
  708 +typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleStatus) {
  709 + /**
  710 + * 未处理
  711 + */
  712 + TIM_GROUP_PENDENCY_HANDLE_STATUS_UNHANDLED = 0,
  713 + /**
  714 + * 被他人处理
  715 + */
  716 + TIM_GROUP_PENDENCY_HANDLE_STATUS_OTHER_HANDLED = 1,
  717 + /**
  718 + * 被用户处理
  719 + */
  720 + TIM_GROUP_PENDENCY_HANDLE_STATUS_OPERATOR_HANDLED = 2,
  721 +};
  722 +
  723 +/**
  724 + * 群组已决结果
  725 + */
  726 +typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleResult) {
  727 + /**
  728 + * 拒绝申请
  729 + */
  730 + TIM_GROUP_PENDENCY_HANDLE_RESULT_REFUSE = 0,
  731 + /**
  732 + * 同意申请
  733 + */
  734 + TIM_GROUP_PENDENCY_HANDLE_RESULT_AGREE = 1,
  735 +};
  736 +
  737 +/**
  738 + * 好友验证方式
  739 + */
  740 +typedef NS_ENUM(NSInteger, TIMFriendAllowType) {
  741 + /**
  742 + * 同意任何用户加好友
  743 + */
  744 + TIM_FRIEND_ALLOW_ANY = 0,
  745 +
  746 + /**
  747 + * 需要验证
  748 + */
  749 + TIM_FRIEND_NEED_CONFIRM = 1,
  750 +
  751 + /**
  752 + * 拒绝任何人加好友
  753 + */
  754 + TIM_FRIEND_DENY_ANY = 2,
  755 +};
  756 +
  757 +/**
  758 + * 性别
  759 + */
  760 +typedef NS_ENUM(NSInteger, TIMGender) {
  761 + /**
  762 + * 未知性别
  763 + */
  764 + TIM_GENDER_UNKNOWN = 0,
  765 + /**
  766 + * 男性
  767 + */
  768 + TIM_GENDER_MALE = 1,
  769 + /**
  770 + * 女性
  771 + */
  772 + TIM_GENDER_FEMALE = 2,
  773 +
  774 +};
  775 +
  776 +/**
  777 + * 操作类型
  778 + */
  779 +typedef NS_ENUM(NSInteger, TIM_SNS_SYSTEM_TYPE){
  780 + /**
  781 + * 增加好友消息
  782 + */
  783 + TIM_SNS_SYSTEM_ADD_FRIEND = 0x01,
  784 + /**
  785 + * 删除好友消息
  786 + */
  787 + TIM_SNS_SYSTEM_DEL_FRIEND = 0x02,
  788 + /**
  789 + * 增加好友申请
  790 + */
  791 + TIM_SNS_SYSTEM_ADD_FRIEND_REQ = 0x03,
  792 + /**
  793 + * 删除未决申请
  794 + */
  795 + TIM_SNS_SYSTEM_DEL_FRIEND_REQ = 0x04,
  796 + /**
  797 + * 黑名单添加
  798 + */
  799 + TIM_SNS_SYSTEM_ADD_BLACKLIST = 0x05,
  800 + /**
  801 + * 黑名单删除
  802 + */
  803 + TIM_SNS_SYSTEM_DEL_BLACKLIST = 0x06,
  804 + /**
  805 + * 未决已读上报
  806 + */
  807 + TIM_SNS_SYSTEM_PENDENCY_REPORT = 0x07,
  808 + /**
  809 + * 关系链资料变更
  810 + */
  811 + TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE = 0x08,
  812 +};
  813 +
  814 +/**
  815 + * 资料变更
  816 + */
  817 +typedef NS_ENUM(NSInteger, TIM_PROFILE_SYSTEM_TYPE){
  818 + /**
  819 + 好友资料变更
  820 + */
  821 + TIM_PROFILE_SYSTEM_FRIEND_PROFILE_CHANGE = 0x01,
  822 +};
  823 +
  824 +#pragma mark - block 回调
  825 +
  826 +/**
  827 + * 获取消息回调
  828 + *
  829 + * @param msgs 消息列表
  830 + */
  831 +typedef void (^TIMGetMsgSucc)(NSArray * msgs);
  832 +
  833 +/**
  834 + * 一般操作成功回调
  835 + */
  836 +typedef void (^TIMSucc)(void);
  837 +
  838 +/**
  839 + * 操作失败回调
  840 + *
  841 + * @param code 错误码
  842 + * @param msg 错误描述,配合错误码使用,如果问题建议打印信息定位
  843 + */
  844 +typedef void (^TIMFail)(int code, NSString * msg);
  845 +
  846 +/**
  847 + * 进度毁掉
  848 + *
  849 + * @param curSize 已下载大小
  850 + * @param totalSize 总大小
  851 + */
  852 +typedef void (^TIMProgress)(NSInteger curSize, NSInteger totalSize);
  853 +
  854 +/**
  855 + * 登录成功回调
  856 + */
  857 +typedef void (^TIMLoginSucc)(void);
  858 +
  859 +/**
  860 + * 获取资源
  861 + *
  862 + * @param data 资源二进制
  863 + */
  864 +typedef void (^TIMGetResourceSucc)(NSData * data);
  865 +
  866 +/**
  867 + * 日志回调
  868 + *
  869 + * @param lvl 输出的日志级别
  870 + * @param msg 日志内容
  871 + */
  872 +typedef void (^TIMLogFunc)(TIMLogLevel lvl, NSString * msg);
  873 +
  874 +/**
  875 + * 上传图片成功回调
  876 + *
  877 + * @param elem 上传图片成功后 elem
  878 + */
  879 +typedef void (^TIMUploadImageSucc)(TIMImageElem * elem);
  880 +
  881 +/**
  882 + * APNs 推送配置更新成功回调
  883 + *
  884 + * @param config 配置
  885 + */
  886 +typedef void (^TIMAPNSConfigSucc)(TIMAPNSConfig* config);
  887 +
  888 +/**
  889 + * 群创建成功
  890 + *
  891 + * @param groupId 群组 Id
  892 + */
  893 +typedef void (^TIMCreateGroupSucc)(NSString * groupId);
  894 +
  895 +/**
  896 + * 好友列表
  897 + *
  898 + * @param friends 好友列表
  899 + */
  900 +typedef void (^TIMFriendArraySucc)(NSArray<TIMFriend *> *friends);
  901 +
  902 +/**
  903 + * 获取资料回调
  904 + *
  905 + * @param profile 资料
  906 + */
  907 +typedef void (^TIMGetProfileSucc)(TIMUserProfile * profile);
  908 +
  909 +/**
  910 + * 获取资料回调
  911 + *
  912 + * @param profiles 资料
  913 + */
  914 +typedef void (^TIMUserProfileArraySucc)(NSArray<TIMUserProfile *> *profiles);
  915 +
  916 +/**
  917 + * 好友操作回调
  918 + *
  919 + * @param result 资料
  920 + */
  921 +typedef void (^TIMFriendResultSucc)(TIMFriendResult *result);
  922 +
  923 +/**
  924 + * 好友操作回调
  925 + *
  926 + * @param results 资料
  927 + */
  928 +typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
  929 +
  930 +/**
  931 + * 检查好友操作回调
  932 + *
  933 + * @param results 检查结果
  934 + */
  935 +typedef void (^TIMCheckFriendResultArraySucc)(NSArray<TIMCheckFriendResult *> *results);
  936 +
  937 +
  938 +/**
  939 + * 群成员列表回调
  940 + *
  941 + * @param members 群成员列表
  942 + */
  943 +typedef void (^TIMGroupMemberSucc)(NSArray * members);
  944 +
  945 +/**
  946 + * 群列表结果回调
  947 + *
  948 + * @param groupList 群列表结果
  949 + */
  950 +typedef void (^TIMGroupListSucc)(NSArray* groupList);
  951 +
  952 +/**
  953 + * 本人群组内成员信息回调
  954 + *
  955 + * @param selfInfo 本人成员信息
  956 + */
  957 +typedef void (^TIMGroupSelfSucc)(TIMGroupMemberInfo * selfInfo);
  958 +
  959 +/**
  960 + * 群接受消息选项回调
  961 + *
  962 + * @param opt 群接受消息选项
  963 + */
  964 +typedef void (^TIMGroupReciveMessageOptSucc)(TIMGroupReceiveMessageOpt opt);
  965 +
  966 +/**
  967 + * 群成员列表回调(分页使用)
  968 + *
  969 + * @param members 群成员(TIMGroupMemberInfo*)列表
  970 + */
  971 +typedef void (^TIMGroupMemberSuccV2)(uint64_t nextSeq, NSArray * members);
  972 +
  973 +/**
  974 + * 群搜索回调
  975 + *
  976 + * @param totalNum 搜索结果的总数
  977 + * @param groups 请求的群列表片段
  978 + */
  979 +typedef void (^TIMGroupSearchSucc)(uint64_t totalNum, NSArray * groups);
  980 +
  981 +/**
  982 + * 获取群组未决请求列表成功
  983 + *
  984 + * @param meta 未决请求元信息
  985 + * @param pendencies 未决请求列表(TIMGroupPendencyItem)数组
  986 + */
  987 +typedef void (^TIMGetGroupPendencyListSucc)(TIMGroupPendencyMeta * meta, NSArray<TIMGroupPendencyItem *> * pendencies);
  988 +
  989 +/**
  990 + * 发送消息给多个用户失败
  991 + *
  992 + * @param code 错误码
  993 + * @param err 错误信息
  994 + * @param detailInfo 错误详情
  995 + */
  996 +typedef void (^TIMSendToUsersFail)(int code, NSString *err, TIMSendToUsersDetailInfo *detailInfo);
  997 +
  998 +#pragma mark - 基本类型
  999 +
  1000 +/// 实现 NSCoding 协议
  1001 +@interface TIMCodingModel : NSObject <NSCoding>
  1002 +
  1003 +///读取实例变量,并把这些数据写到 coder 中去,序列化数据
  1004 +- (void)encodeWithCoder:(NSCoder *)encoder;
  1005 +
  1006 +///从 coder 中读取数据,保存到相应的变量中,即反序列化数据
  1007 +- (id)initWithCoder:(NSCoder *)decoder;
  1008 +
  1009 +@end
  1010 +
  1011 +/// 初始化 SDK 配置信息
  1012 +@interface TIMSdkConfig : NSObject
  1013 +
  1014 +///用户标识接入 SDK 的应用 ID,必填
  1015 +@property(nonatomic,assign) int sdkAppId;
  1016 +
  1017 +///用户的账号类型,新版本不需要再填写
  1018 +//@property(nonatomic,strong) NSString * accountType;
  1019 +
  1020 +///禁止在控制台打印 log
  1021 +@property(nonatomic,assign) BOOL disableLogPrint;
  1022 +
  1023 +///本地写 log 文件的等级,默认 DEBUG 等级
  1024 +@property(nonatomic,assign) TIMLogLevel logLevel;
  1025 +
  1026 +///log 文件路径,不设置时为默认路径,可以通过 TIMManager -> getLogPath 获取 log 路径
  1027 +@property(nonatomic,strong) NSString * logPath;
  1028 +
  1029 +///回调给 logFunc 函数的 log 等级,默认 DEBUG 等级
  1030 +@property(nonatomic,assign) TIMLogLevel logFuncLevel;
  1031 +
  1032 +///log 监听函数
  1033 +@property(nonatomic,copy) TIMLogFunc logFunc;
  1034 +
  1035 +///消息数据库路径,不设置时为默认路径
  1036 +@property(nonatomic,strong) NSString * dbPath;
  1037 +
  1038 +///网络监听器,监听网络连接成功失败的状态
  1039 +@property(nonatomic,weak) id<TIMConnListener> connListener;
  1040 +
  1041 +@end
  1042 +
  1043 +/// 设置用户配置信息
  1044 +@interface TIMUserConfig : NSObject
  1045 +
  1046 +///禁用本地存储(AVChatRoom,BChatRoom 消息数量很大,出于程序性能的考虑,默认不存本地)
  1047 +@property(nonatomic,assign) BOOL disableStorage;
  1048 +
  1049 +///默认情况下,出于性能考虑,当用户在终端 A 收到未读消息后,Server 默认会删除未读消息,但如果用户切换到终端 B 后,IM SDK 无法再同步到未读消息,未读计数也不会增加,如果需要在终端 B 下也有未读,请设置 disableAutoReport 为 YES,这个时候 Server 不会再主动删除未读消息。注意一旦这这样设置,开发者需要主动调用 TIMConversation.h -> setReadMessage ,否则未读消息会一直存在 Server,IM SDK 每次登录或则断网重连都会再次同步到未读消息,详情请参考官方文档 [自动已读上报](https://cloud.tencent.com/document/product/269/9151)。
  1050 +@property(nonatomic,assign) BOOL disableAutoReport;
  1051 +
  1052 +///已读回执是自己发出去的消息,对方设置为已读后,自己能收到已读的回调,只针对单聊(C2C)会话生效,默认是关闭的,如果需要开启,请设置 enableReadReceipt 为 YES,收到消息的用户需要显式调用 TIMConversation.h -> setReadMessage,发消息的用户才能通过 TIMMessageReceiptListener 监听到消息的已读回执。
  1053 +@property(nonatomic,assign) BOOL enableReadReceipt;
  1054 +
  1055 +///设置默认拉取的群组资料,如果想要拉取自定义字段,要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段配置对应的 "自定义字段" 和用户操作权限,控制台配置之后 5 分钟后才会生效。
  1056 +@property(nonatomic,strong) TIMGroupInfoOption * groupInfoOpt;
  1057 +
  1058 +///设置默认拉取的群成员资料,如果想要拉取自定义字段,要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段配置对应的 "自定义字段" 和用户操作权限,控制台配置之后 5 分钟后才会生效。
  1059 +@property(nonatomic,strong) TIMGroupMemberInfoOption * groupMemberInfoOpt;
  1060 +
  1061 +///关系链参数
  1062 +@property(nonatomic,strong) TIMFriendProfileOption * friendProfileOpt;
  1063 +
  1064 +///用户登录状态监听器,用于监听用户被踢,断网重连失败,userSig 过期的通知
  1065 +@property(nonatomic,weak) id<TIMUserStatusListener> userStatusListener;
  1066 +
  1067 +///会话刷新监听器,用于监听会话的刷新
  1068 +@property(nonatomic,weak) id<TIMRefreshListener> refreshListener;
  1069 +
  1070 +///消息已读回执监听器,用于监听消息已读回执,enableReadReceipt 字段需要设置为 YES
  1071 +@property(nonatomic,weak) id<TIMMessageReceiptListener> messageReceiptListener;
  1072 +
  1073 +///消息修改监听器,用于监听消息状态的变化
  1074 +@property(nonatomic,weak) id<TIMMessageUpdateListener> messageUpdateListener;
  1075 +
  1076 +///消息撤回监听器,用于监听会话中的消息撤回通知
  1077 +@property(nonatomic,weak) id<TIMMessageRevokeListener> messageRevokeListener;
  1078 +
  1079 +///文件上传进度监听器,发送语音,图片,视频,文件消息的时候需要先上传对应文件到服务器,这里可以监听上传进度
  1080 +@property(nonatomic,weak) id<TIMUploadProgressListener> uploadProgressListener;
  1081 +
  1082 +///群组事件通知监听器
  1083 +@property(nonatomic,weak) id<TIMGroupEventListener> groupEventListener;
  1084 +
  1085 +///关系链数据本地缓存监听器
  1086 +@property(nonatomic,weak) id<TIMFriendshipListener> friendshipListener;
  1087 +
  1088 +@end
  1089 +
  1090 +/// 登录参数
  1091 +@interface TIMLoginParam : NSObject
  1092 +
  1093 +///用户名
  1094 +@property(nonatomic,strong) NSString* identifier;
  1095 +
  1096 +///鉴权 Token
  1097 +@property(nonatomic,strong) NSString* userSig;
  1098 +
  1099 +///App 用户使用 OAuth 授权体系分配的 Appid
  1100 +@property(nonatomic,strong) NSString* appidAt3rd;
  1101 +
  1102 +
  1103 +@end
  1104 +
  1105 +/// APNs 配置
  1106 +@interface TIMAPNSConfig : NSObject
  1107 +
  1108 +///是否开启推送:0-不进行设置 1-开启推送 2-关闭推送
  1109 +@property(nonatomic,assign) uint32_t openPush;
  1110 +
  1111 +///C2C 消息声音,不设置传入 nil
  1112 +@property(nonatomic,strong) NSString * c2cSound;
  1113 +
  1114 +///Group 消息声音,不设置传入 nil
  1115 +@property(nonatomic,strong) NSString * groupSound;
  1116 +
  1117 +///Video 音视频邀请声音,不设置传入 nil (暂不支持)
  1118 +@property(nonatomic,strong) NSString * videoSound;
  1119 +
  1120 +@end
  1121 +
  1122 +/// SetToken 参数
  1123 +@interface TIMTokenParam : NSObject
  1124 +
  1125 +///token 是苹果后台对客户端的唯一标识,需要主动调用系统 API 向苹果请求获取
  1126 +@property(nonatomic,strong) NSData* token;
  1127 +
  1128 +///业务 ID,传递证书时分配
  1129 +@property(nonatomic,assign) uint32_t busiId;
  1130 +
  1131 +@end
  1132 +
  1133 +/// 切后台参数
  1134 +@interface TIMBackgroundParam : NSObject
  1135 +
  1136 +///C2C 未读计数
  1137 +@property(nonatomic,assign) int c2cUnread;
  1138 +
  1139 +///群未读计数
  1140 +@property(nonatomic,assign) int groupUnread;
  1141 +
  1142 +@end
  1143 +
  1144 +/// 消息定位
  1145 +@interface TIMMessageLocator : NSObject
  1146 +
  1147 +///所属会话的 id
  1148 +@property(nonatomic,strong) NSString * sessId;
  1149 +
  1150 +///所属会话的类型
  1151 +@property(nonatomic,assign) TIMConversationType sessType;
  1152 +
  1153 +///消息序列号
  1154 +@property(nonatomic,assign) uint64_t seq;
  1155 +
  1156 +///消息随机码
  1157 +@property(nonatomic,assign) uint64_t rand;
  1158 +
  1159 +///消息时间戳
  1160 +@property(nonatomic,assign) time_t time;
  1161 +
  1162 +///是否本人消息
  1163 +@property(nonatomic,assign) BOOL isSelf;
  1164 +
  1165 +///是否来自撤销通知
  1166 +@property(nonatomic,assign) BOOL isFromRevokeNotify;
  1167 +
  1168 +@end
  1169 +
  1170 +/// 已读回执
  1171 +@interface TIMMessageReceipt : NSObject
  1172 +
  1173 +///已读回执对应的会话(目前只支持 C2C 会话)
  1174 +@property(nonatomic,strong) TIMConversation * conversation;
  1175 +
  1176 +///收到已读回执时,这个时间戳之前的消息都已读
  1177 +@property(nonatomic,assign) time_t timestamp;
  1178 +@end
  1179 +
  1180 +/// Android 离线推送配置
  1181 +@interface TIMAndroidOfflinePushConfig : NSObject
  1182 +
  1183 +///离线 Push 展示标题
  1184 +@property(nonatomic,strong) NSString * title;
  1185 +
  1186 +///离线 Push 展示自定义文本
  1187 +@property(nonatomic,strong) NSString * desc;
  1188 +
  1189 +///离线 Push 时声音字段信息
  1190 +@property(nonatomic,strong) NSString * sound;
  1191 +
  1192 +///为了保证在 Android 8.0 系统以上的 OPPO 手机上能收到离线推送消息,需要 app 在该手机上创建 channelID,并且设置该参数。
  1193 +@property(nonatomic,strong) NSString * OPPOChannelID;
  1194 +
  1195 +///离线 Push 通知形式
  1196 +@property(nonatomic,assign) TIMAndroidOfflinePushNotifyMode notifyMode;
  1197 +
  1198 +@end
  1199 +
  1200 +/// iOS 离线推送配置
  1201 +@interface TIMIOSOfflinePushConfig : NSObject
  1202 +
  1203 +///离线 Push 展示标题
  1204 +@property(nonatomic,strong) NSString * title;
  1205 +
  1206 +///离线 Push 展示自定义文本
  1207 +@property(nonatomic,strong) NSString * desc;
  1208 +
  1209 +///离线 Push 时声音字段信息
  1210 +@property(nonatomic,strong) NSString * sound;
  1211 +
  1212 +///忽略 badge 计数,如果设置为 YES,在 iOS 接收端,这条消息不会使 APP 的应用图标未读计数增加
  1213 +@property(nonatomic,assign) BOOL ignoreBadge;
  1214 +
  1215 +@end
  1216 +
  1217 +/// 填入 sound 字段表示接收时不会播放声音
  1218 +extern NSString * const kIOSOfflinePushNoSound;
  1219 +
  1220 +/// 自定义消息 push
  1221 +@interface TIMOfflinePushInfo : NSObject
  1222 +
  1223 +///离线 Push 展示标题,针对 iOS 和 Android 平台都生效,如果您需要分平台单独设置,请设置 iosConfig -> title 和 androidConfig -> title
  1224 +@property(nonatomic,strong) NSString * title;
  1225 +
  1226 +///离线 Push 展示自定义文本,针对 iOS 和 Android 平台都生效,如果您需要分平台单独设置,请设置 iosConfig -> desc 和 androidConfig -> desc
  1227 +@property(nonatomic,strong) NSString * desc;
  1228 +
  1229 +///离线 Push 时扩展字段信息
  1230 +@property(nonatomic,strong) NSString * ext;
  1231 +
  1232 +///推送规则标志
  1233 +@property(nonatomic,assign) TIMOfflinePushFlag pushFlag;
  1234 +
  1235 +///iOS离线推送配置
  1236 +@property(nonatomic,strong) TIMIOSOfflinePushConfig * iosConfig;
  1237 +
  1238 +///Android离线推送配置
  1239 +@property(nonatomic,strong) TIMAndroidOfflinePushConfig * androidConfig;
  1240 +@end
  1241 +
  1242 +/// 群组内的本人信息
  1243 +@interface TIMGroupSelfInfo : NSObject
  1244 +
  1245 +///加入群组时间
  1246 +@property(nonatomic,assign) uint32_t joinTime;
  1247 +
  1248 +///群组中的角色
  1249 +@property(nonatomic,assign) TIMGroupMemberRole role;
  1250 +
  1251 +///群组消息接收选项
  1252 +@property(nonatomic,assign) TIMGroupReceiveMessageOpt recvOpt;
  1253 +
  1254 +///群组中的未读消息数
  1255 +@property(nonatomic,assign) uint32_t unReadMessageNum;
  1256 +
  1257 +@end
  1258 +
  1259 +/// 群资料信息
  1260 +@interface TIMGroupInfo : TIMCodingModel
  1261 +
  1262 +///群组 Id
  1263 +@property(nonatomic,strong) NSString* group;
  1264 +
  1265 +///群名
  1266 +@property(nonatomic,strong) NSString* groupName;
  1267 +
  1268 +///群创建人/管理员
  1269 +@property(nonatomic,strong) NSString * owner;
  1270 +
  1271 +///群类型:Private,Public,ChatRoom
  1272 +@property(nonatomic,strong) NSString* groupType;
  1273 +
  1274 +///群创建时间
  1275 +@property(nonatomic,assign) uint32_t createTime;
  1276 +
  1277 +///最近一次群资料修改时间
  1278 +@property(nonatomic,assign) uint32_t lastInfoTime;
  1279 +
  1280 +///最近一次发消息时间
  1281 +@property(nonatomic,assign) uint32_t lastMsgTime;
  1282 +
  1283 +///最大成员数
  1284 +@property(nonatomic,assign) uint32_t maxMemberNum;
  1285 +
  1286 +///群成员数量
  1287 +@property(nonatomic,assign) uint32_t memberNum;
  1288 +
  1289 +///入群类型
  1290 +@property(nonatomic,assign) TIMGroupAddOpt addOpt;
  1291 +
  1292 +///群公告
  1293 +@property(nonatomic,strong) NSString* notification;
  1294 +
  1295 +///群简介
  1296 +@property(nonatomic,strong) NSString* introduction;
  1297 +
  1298 +///群头像
  1299 +@property(nonatomic,strong) NSString* faceURL;
  1300 +
  1301 +///最后一条消息
  1302 +@property(nonatomic,strong) TIMMessage* lastMsg;
  1303 +
  1304 +///在线成员数量
  1305 +@property(nonatomic,assign) uint32_t onlineMemberNum;
  1306 +
  1307 +///群组是否被搜索类型
  1308 +@property(nonatomic,assign) TIMGroupSearchableType isSearchable;
  1309 +
  1310 +///群组成员可见类型
  1311 +@property(nonatomic,assign) TIMGroupMemberVisibleType isMemberVisible;
  1312 +
  1313 +///是否全员禁言
  1314 +@property(nonatomic,assign) BOOL allShutup;
  1315 +
  1316 +///群组中的本人信息
  1317 +@property(nonatomic,strong) TIMGroupSelfInfo* selfInfo;
  1318 +
  1319 +///自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型
  1320 +@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
  1321 +
  1322 +@end
  1323 +
  1324 +@interface TIMModifyGroupInfo : TIMCodingModel
  1325 +///群组 ID
  1326 +@property(nonatomic,strong) NSString *groupID;
  1327 +
  1328 +///群名称
  1329 +@property(nonatomic,strong) NSString *groupName;
  1330 +
  1331 +///群公告
  1332 +@property(nonatomic,strong) NSString *notification;
  1333 +
  1334 +///群简介
  1335 +@property(nonatomic,strong) NSString *introduction;
  1336 +
  1337 +///群头像
  1338 +@property(nonatomic,strong) NSString *faceUrl;
  1339 +
  1340 +///入群类型
  1341 +@property(nonatomic,assign) TIMGroupAddOpt addOption;
  1342 +
  1343 +///最大成员数
  1344 +@property(nonatomic,assign) uint32_t maxMemberNum;
  1345 +
  1346 +///群组成员可见类型
  1347 +@property(nonatomic,assign) TIMGroupMemberVisibleType isMemberVisible;
  1348 +
  1349 +///群组是否被搜索类型
  1350 +@property(nonatomic,assign) TIMGroupSearchableType isSearchable;
  1351 +
  1352 +///是否全员禁言
  1353 +@property(nonatomic,assign) BOOL allShutup;
  1354 +
  1355 +///群自定义字段集合
  1356 +@property(nonatomic,strong) NSDictionary<NSString *,NSData *> *customInfo;
  1357 +
  1358 +@end
  1359 +
  1360 +/// 获取群组信息结果
  1361 +@interface TIMGroupInfoResult : TIMGroupInfo
  1362 +
  1363 +/// 结果 0:成功;非0:失败
  1364 +@property(nonatomic,assign) int resultCode;
  1365 +
  1366 +/// 结果信息
  1367 +@property(nonatomic,strong) NSString *resultInfo;
  1368 +@end
  1369 +
  1370 +/// 事件上报信息
  1371 +@interface TIMEventReportItem : NSObject
  1372 +
  1373 +///事件 id
  1374 +@property(nonatomic,assign) uint32_t event;
  1375 +
  1376 +///错误码
  1377 +@property(nonatomic,assign) uint32_t code;
  1378 +
  1379 +///错误描述
  1380 +@property(nonatomic,strong) NSString * desc;
  1381 +
  1382 +///事件延迟(单位 ms)
  1383 +@property(nonatomic,assign) uint32_t delay;
  1384 +
  1385 +@end
  1386 +
  1387 +/// 获取某个群组资料
  1388 +@interface TIMGroupInfoOption : NSObject
  1389 +
  1390 +///需要获取的群组信息标志(TIMGetGroupBaseInfoFlag),默认为0xffffff
  1391 +@property(nonatomic,assign) uint64_t groupFlags;
  1392 +
  1393 +///需要获取群组资料的自定义信息(NSString*)列表 (接口已废弃,控制台配置群组自定义字段后,SDK 会根据权限自动拉取)
  1394 +@property(nonatomic,strong) NSArray * groupCustom DEPRECATED_ATTRIBUTE;
  1395 +
  1396 +@end
  1397 +
  1398 +/// 需要某个群成员资料
  1399 +@interface TIMGroupMemberInfoOption : NSObject
  1400 +
  1401 +///需要获取的群成员标志(TIMGetGroupMemInfoFlag),默认为0xffffff
  1402 +@property(nonatomic,assign) uint64_t memberFlags ;
  1403 +
  1404 +///需要获取群成员资料的自定义信息(NSString*)列表 (接口已废弃,控制台配置群成员自定义字段后,SDK 会根据权限自动拉取)
  1405 +@property(nonatomic,strong) NSArray * memberCustom DEPRECATED_ATTRIBUTE;
  1406 +
  1407 +@end
  1408 +
  1409 +/// 群成员资料
  1410 +@interface TIMGroupMemberInfo : TIMCodingModel
  1411 +
  1412 +///成员
  1413 +@property(nonatomic,strong) NSString* member;
  1414 +
  1415 +///群名片
  1416 +@property(nonatomic,strong) NSString* nameCard;
  1417 +
  1418 +///加入群组时间
  1419 +@property(nonatomic,assign) time_t joinTime;
  1420 +
  1421 +///成员类型
  1422 +@property(nonatomic,assign) TIMGroupMemberRole role;
  1423 +
  1424 +///禁言结束时间(时间戳)
  1425 +@property(nonatomic,assign) uint32_t silentUntil;
  1426 +
  1427 +///自定义字段集合,key 是 NSString*类型,value 是 NSData*类型
  1428 +@property(nonatomic,strong) NSDictionary* customInfo;
  1429 +
  1430 +///如果是自己,可以获取自己的群接收选项
  1431 +@property(nonatomic,assign) TIMGroupReceiveMessageOpt receiveMessageOpt;
  1432 +
  1433 +@end
  1434 +
  1435 +/// 修改群成员资料
  1436 +@interface TIMModifyMemberInfo : TIMCodingModel
  1437 +///需要修改群成员资料的 ID
  1438 +@property(nonatomic,strong) NSString* memberID;
  1439 +
  1440 +///群接收选项,只有本人可以设置
  1441 +@property(nonatomic,assign) TIMGroupReceiveMessageOpt receiveMessageOpt;
  1442 +
  1443 +///群名片,只有本人、群主、管理员可以设置
  1444 +@property(nonatomic,strong) NSString* nameCard;
  1445 +
  1446 +///群成员自定义字段,只有本人、群主、管理员可以设置
  1447 +@property(nonatomic,strong) NSDictionary* customInfo;
  1448 +
  1449 +///群成员角色,只有群主、管理员可以设置,直播大群不支持设置
  1450 +@property(nonatomic,assign) TIMGroupMemberRole role;
  1451 +
  1452 +///群成员禁言时间(s),只有群主、管理员可以设置
  1453 +@property(nonatomic,assign) uint32_t silence;
  1454 +
  1455 +@end
  1456 +
  1457 +///资料与关系链
  1458 +@interface TIMFriendProfileOption : NSObject
  1459 +
  1460 +///关系链最大缓存时间(默认缓存一天;获取资料和关系链超过缓存时间,将自动向服务器发起请求)
  1461 +@property NSInteger expiredSeconds;
  1462 +
  1463 +@end
  1464 +
  1465 +///用户资料
  1466 +@interface TIMUserProfile : TIMCodingModel
  1467 +
  1468 +/**
  1469 + * 用户 identifier
  1470 + */
  1471 +@property(nonatomic,strong) NSString* identifier;
  1472 +
  1473 +/**
  1474 + * 用户昵称
  1475 + */
  1476 +@property(nonatomic,strong) NSString* nickname;
  1477 +
  1478 +/**
  1479 + * 好友验证方式
  1480 + */
  1481 +@property(nonatomic,assign) TIMFriendAllowType allowType;
  1482 +
  1483 +/**
  1484 + * 用户头像
  1485 + */
  1486 +@property(nonatomic,strong) NSString* faceURL;
  1487 +
  1488 +/**
  1489 + * 用户签名
  1490 + */
  1491 +@property(nonatomic,strong) NSData* selfSignature;
  1492 +
  1493 +/**
  1494 + * 用户性别
  1495 + */
  1496 +@property(nonatomic,assign) TIMGender gender;
  1497 +
  1498 +/**
  1499 + * 用户生日
  1500 + */
  1501 +@property(nonatomic,assign) uint32_t birthday;
  1502 +
  1503 +/**
  1504 + * 用户区域
  1505 + */
  1506 +@property(nonatomic,strong) NSData* location;
  1507 +
  1508 +/**
  1509 + * 用户语言
  1510 + */
  1511 +@property(nonatomic,assign) uint32_t language;
  1512 +
  1513 +/**
  1514 + * 等级
  1515 + */
  1516 +@property(nonatomic,assign) uint32_t level;
  1517 +
  1518 +/**
  1519 + * 角色
  1520 + */
  1521 +@property(nonatomic,assign) uint32_t role;
  1522 +
  1523 +/**
  1524 + * 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
  1525 + * key值按照后台配置的字符串传入,不包括 TIMProfileTypeKey_Custom_Prefix 前缀
  1526 + */
  1527 +@property(nonatomic,strong) NSDictionary* customInfo;
  1528 +
  1529 +@end
  1530 +
  1531 +typedef void(^ProfileCallBack) (TIMUserProfile * profile);
  1532 +
  1533 +/**
  1534 + * 好友
  1535 + */
  1536 +@interface TIMFriend : TIMCodingModel
  1537 +
  1538 +/**
  1539 + * 好友identifier
  1540 + */
  1541 +@property(nonatomic,strong) NSString *identifier;
  1542 +
  1543 +/**
  1544 + * 好友备注(最大96字节,获取自己资料时,该字段为空)
  1545 + */
  1546 +@property(nonatomic,strong) NSString *remark;
  1547 +
  1548 +/**
  1549 + * 分组名称 NSString* 列表
  1550 + */
  1551 +@property(nonatomic,strong) NSArray *groups;
  1552 +
  1553 +/**
  1554 + * 申请时的添加理由
  1555 + */
  1556 +@property(nonatomic,strong) NSString *addWording;
  1557 +
  1558 +/**
  1559 + * 申请时的添加来源
  1560 + */
  1561 +@property(nonatomic,strong) NSString *addSource;
  1562 +
  1563 +/**
  1564 + * 添加时间
  1565 + */
  1566 +@property(nonatomic,assign) uint64_t addTime;
  1567 +
  1568 +/**
  1569 + * 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
  1570 + * key值按照后台配置的字符串传入,不包括 TIMFriendTypeKey_Custom_Prefix 前缀
  1571 + */
  1572 +@property(nonatomic,strong) NSDictionary* customInfo;
  1573 +
  1574 +/**
  1575 + * 好友资料
  1576 + */
  1577 +@property(nonatomic,strong) TIMUserProfile *profile;
  1578 +
  1579 +@end
  1580 +
  1581 +/**
  1582 + * 创建群参数
  1583 + */
  1584 +@interface TIMCreateGroupInfo : TIMCodingModel
  1585 +
  1586 +/**
  1587 + * 群组Id,nil则使用系统默认Id
  1588 + */
  1589 +@property(nonatomic,strong) NSString* group;
  1590 +
  1591 +/**
  1592 + * 群名
  1593 + */
  1594 +@property(nonatomic,strong) NSString* groupName;
  1595 +
  1596 +/**
  1597 + * 群类型:Private,Public,ChatRoom,AVChatRoom,BChatRoom
  1598 + */
  1599 +@property(nonatomic,strong) NSString* groupType;
  1600 +
  1601 +/**
  1602 + * 是否设置入群选项,Private类型群组请设置为false
  1603 + */
  1604 +@property(nonatomic,assign) BOOL setAddOpt;
  1605 +
  1606 +/**
  1607 + * 入群选项
  1608 + */
  1609 +@property(nonatomic,assign) TIMGroupAddOpt addOpt;
  1610 +
  1611 +/**
  1612 + * 最大成员数,填0则系统使用默认值
  1613 + */
  1614 +@property(nonatomic,assign) uint32_t maxMemberNum;
  1615 +
  1616 +/**
  1617 + * 群公告
  1618 + */
  1619 +@property(nonatomic,strong) NSString* notification;
  1620 +
  1621 +/**
  1622 + * 群简介
  1623 + */
  1624 +@property(nonatomic,strong) NSString* introduction;
  1625 +
  1626 +/**
  1627 + * 群头像
  1628 + */
  1629 +@property(nonatomic,strong) NSString* faceURL;
  1630 +
  1631 +/**
  1632 + * 自定义字段集合,key是NSString*类型,value是NSData*类型
  1633 + */
  1634 +@property(nonatomic,strong) NSDictionary* customInfo;
  1635 +
  1636 +/**
  1637 + * 创建成员(TIMCreateGroupMemberInfo*)列表
  1638 + */
  1639 +@property(nonatomic,strong) NSArray <TIMCreateGroupMemberInfo *>* membersInfo;
  1640 +
  1641 +@end
  1642 +
  1643 +/**
  1644 + * 未决请求选项
  1645 + */
  1646 +@interface TIMGroupPendencyOption : TIMCodingModel
  1647 +
  1648 +/**
  1649 + * 拉取的起始时间 0:拉取最新的
  1650 + */
  1651 +@property(nonatomic,assign) uint64_t timestamp;
  1652 +
  1653 +/**
  1654 + * 每页的数量,最大值为 10,设置超过 10,也最多只能拉回 10 条未决
  1655 + */
  1656 +@property(nonatomic,assign) uint32_t numPerPage;
  1657 +@end
  1658 +
  1659 +/**
  1660 + * 未决请求元信息
  1661 + */
  1662 +@interface TIMGroupPendencyMeta : TIMCodingModel
  1663 +
  1664 +/**
  1665 + * 下一次拉取的起始时间戳
  1666 + */
  1667 +@property(nonatomic,assign) uint64_t nextStartTime;
  1668 +
  1669 +/**
  1670 + * 已读时间戳大小
  1671 + */
  1672 +@property(nonatomic,assign) uint64_t readTimeSeq;
  1673 +
  1674 +/**
  1675 + * 未决未读数
  1676 + */
  1677 +@property(nonatomic,assign) uint32_t unReadCnt;
  1678 +
  1679 +@end
  1680 +
  1681 +/**
  1682 + * 创建群组时的成员信息
  1683 + */
  1684 +@interface TIMCreateGroupMemberInfo : TIMCodingModel
  1685 +
  1686 +/**
  1687 + * 被操作成员
  1688 + */
  1689 +@property(nonatomic,strong) NSString* member;
  1690 +
  1691 +/**
  1692 + * 成员类型
  1693 + */
  1694 +@property(nonatomic,assign) TIMGroupMemberRole role;
  1695 +
  1696 +/**
  1697 + * 自定义字段集合,key是NSString*类型,value是NSData*类型
  1698 + */
  1699 +@property(nonatomic,strong) NSDictionary* customInfo;
  1700 +
  1701 +@end
  1702 +
  1703 +/**
  1704 + * 成员操作返回值
  1705 + */
  1706 +@interface TIMGroupMemberResult : NSObject
  1707 +
  1708 +/**
  1709 + * 被操作成员
  1710 + */
  1711 +@property(nonatomic,strong) NSString* member;
  1712 +/**
  1713 + * 返回状态
  1714 + */
  1715 +@property(nonatomic,assign) TIMGroupMemberStatus status;
  1716 +
  1717 +@end
  1718 +
  1719 +/**
  1720 + * 未决申请
  1721 + */
  1722 +@interface TIMGroupPendencyItem : TIMCodingModel
  1723 +
  1724 +/**
  1725 + * 相关群组id
  1726 + */
  1727 +@property(nonatomic,strong) NSString* groupId;
  1728 +
  1729 +/**
  1730 + * 请求者id,请求加群:请求者,邀请加群:邀请人
  1731 + */
  1732 +@property(nonatomic,strong) NSString* fromUser;
  1733 +
  1734 +/**
  1735 + * 判决者id,请求加群:0,邀请加群:被邀请人
  1736 + */
  1737 +@property(nonatomic,strong) NSString* toUser;
  1738 +
  1739 +/**
  1740 + * 未决添加时间
  1741 + */
  1742 +@property(nonatomic,assign) uint64_t addTime;
  1743 +
  1744 +/**
  1745 + * 未决请求类型
  1746 + */
  1747 +@property(nonatomic,assign) TIMGroupPendencyGetType getType;
  1748 +
  1749 +/**
  1750 + * 已决标志
  1751 + */
  1752 +@property(nonatomic,assign) TIMGroupPendencyHandleStatus handleStatus;
  1753 +
  1754 +/**
  1755 + * 已决结果
  1756 + */
  1757 +@property(nonatomic,assign) TIMGroupPendencyHandleResult handleResult;
  1758 +
  1759 +/**
  1760 + * 申请或邀请附加信息
  1761 + */
  1762 +@property(nonatomic,strong) NSString* requestMsg;
  1763 +
  1764 +/**
  1765 + * 审批信息:同意或拒绝信息
  1766 + */
  1767 +@property(nonatomic,strong) NSString* handledMsg;
  1768 +
  1769 +
  1770 +/**
  1771 + * 同意申请
  1772 + *
  1773 + * @param msg 同意理由,选填
  1774 + * @param succ 成功回调
  1775 + * @param fail 失败回调,返回错误码和错误描述
  1776 + */
  1777 +-(void) accept:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  1778 +
  1779 +/**
  1780 + * 拒绝申请
  1781 + *
  1782 + * @param msg 拒绝理由,选填
  1783 + * @param succ 成功回调
  1784 + * @param fail 失败回调,返回错误码和错误描述
  1785 + */
  1786 +-(void) refuse:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  1787 +
  1788 +
  1789 +/**
  1790 + * 用户自己的id
  1791 + */
  1792 +@property(nonatomic,strong) NSString* selfIdentifier;
  1793 +
  1794 +@end
  1795 +
  1796 +/**
  1797 + * 关系链变更详细信息
  1798 + */
  1799 +@interface TIMSNSChangeInfo : NSObject
  1800 +
  1801 +/**
  1802 + * 用户 identifier
  1803 + */
  1804 +@property(nonatomic,strong) NSString * identifier;
  1805 +
  1806 +/**
  1807 + * 用户昵称
  1808 + */
  1809 +@property(nonatomic,strong) NSString * nickname;
  1810 +
  1811 +/**
  1812 + * 申请添加时有效,添加理由
  1813 + */
  1814 +@property(nonatomic,strong) NSString * wording;
  1815 +
  1816 +/**
  1817 + * 申请时填写,添加来源
  1818 + */
  1819 +@property(nonatomic,strong) NSString * source;
  1820 +
  1821 +
  1822 +/**
  1823 + * 备注 type=TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE 有效
  1824 + */
  1825 +@property(nonatomic,strong) NSString * remark;
  1826 +
  1827 +@end
  1828 +
  1829 +/**
  1830 + * 发送消息给多用户的失败回调信息
  1831 + */
  1832 +@interface TIMSendToUsersDetailInfo : NSObject
  1833 +/**
  1834 + * 发送消息成功的目标用户数
  1835 + */
  1836 +@property(nonatomic,assign) uint32_t succCnt;
  1837 +/**
  1838 + * 发送消息失败的目标用户数
  1839 + */
  1840 +@property(nonatomic,assign) uint32_t failCnt;
  1841 +/**
  1842 + * 失败信息(TIMSendToUsersErrInfo*)列表
  1843 + */
  1844 +@property(nonatomic,strong) NSArray *errInofs;
  1845 +@end
  1846 +
  1847 +/**
  1848 + * 发送消息给多用户的失败信息
  1849 + */
  1850 +@interface TIMSendToUsersErrInfo : NSObject
  1851 +/**
  1852 + * 发送消息失败的目标用户id
  1853 + */
  1854 +@property(nonatomic,strong) NSString *identifier;
  1855 +/**
  1856 + * 错误码
  1857 + */
  1858 +@property(nonatomic,assign) int code;
  1859 +/**
  1860 + * 错误描述
  1861 + */
  1862 +@property(nonatomic,strong) NSString *err;
  1863 +@end
  1864 +#endif
  1 +/////////////////////////////////////////////////////////////////////
  2 +//
  3 +// 腾讯云通信服务 IMSDK
  4 +//
  5 +// 模块名称:TIMConversation + MsgExt
  6 +//
  7 +// 模块功能:此处主要存放待废弃的 API 函数,建议您使用 TIMConversation.h 内部声明的接口函数
  8 +//
  9 +/////////////////////////////////////////////////////////////////////
  10 +
  11 +#ifndef TIMConversation_h
  12 +#define TIMConversation_h
  13 +#import "TIMConversation.h"
  14 +
  15 +
  16 +@interface TIMConversation (MsgExt)
  17 +
  18 +/**
  19 + * 向前获取会话漫游消息
  20 + *
  21 + * 调用方式和 getMessage 一样,区别是 getMessage 获取的是时间更老的消息,主要用于下拉 Tableview 刷新消息数据,getMessageForward 获取的是时间更新的消息,主要用于上拉 Tableview 刷新消息数据。
  22 + *
  23 + * @param count 获取数量
  24 + * @param last 上次最后一条消息,如果 last 为 nil,从最新的消息开始读取
  25 + * @param succ 成功时回调
  26 + * @param fail 失败时回调
  27 + *
  28 + * @return 0:本次操作成功;1:本次操作失败
  29 + */
  30 +- (int)getMessageForward:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
  31 +
  32 +/**
  33 + * 获取指定会话消息
  34 + *
  35 + * @param locators 消息定位符(TIMMessageLocator)数组
  36 + * @param succ 成功时回调
  37 + * @param fail 失败时回调
  38 + *
  39 + * @return 0:本次操作成功;1:本次操作失败
  40 + */
  41 +- (int)findMessages:(NSArray*)locators succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
  42 +
  43 +/**
  44 + * 获取自己的 id
  45 + *
  46 + * @return 用户 id
  47 + */
  48 +- (NSString*)getSelfIdentifier;
  49 +
  50 +@end
  51 +
  52 +#endif /* TIMConversation_h */
  1 +/////////////////////////////////////////////////////////////////////
  2 +//
  3 +// 腾讯云通信服务 IMSDK
  4 +//
  5 +// 模块名称:TIMConversation 会话模块
  6 +//
  7 +// 模块功能:一个会话对应一个聊天窗口,比如跟一个好友的 C2C 聊天叫做一个会话,一个聊天群也叫做一个会话。
  8 +//
  9 +// TIMConversation 提供的接口函数都是围绕消息的相关操作,包括:消息发送、获取历史消息、设置消息已读、撤回和删除等等。
  10 +//
  11 +/////////////////////////////////////////////////////////////////////
  12 +
  13 +#ifndef ImSDK_TIMConversation_h
  14 +#define ImSDK_TIMConversation_h
  15 +
  16 +#import "TIMComm.h"
  17 +#import "TIMCallback.h"
  18 +#import "TIMMessage.h"
  19 +
  20 +@class TIMMessage;
  21 +
  22 +@interface TIMConversation : NSObject
  23 +
  24 +#pragma mark 一,发消息
  25 +
  26 +/////////////////////////////////////////////////////////////////////////////////
  27 +//
  28 +// (一)发消息
  29 +//
  30 +/////////////////////////////////////////////////////////////////////////////////
  31 +/// @name 发消息相关接口
  32 +/// @{
  33 +/**
  34 + * 1.1 发送消息
  35 + *
  36 + * TIMMessage 由多个 TIMElem 组成,一个 TIMElem 可以是一串文本,也可以是一张图片。
  37 + * 虽然说每一条消息都可以包含多个 TIMElem,但这个并不常用,通常您只需要在一个 TIMMessage 塞入一个 TIMElem 即可。
  38 + *
  39 + * 详情请参考官网文档 [消息收发](https://cloud.tencent.com/document/product/269/9150)
  40 + *
  41 + * @param msg 消息体
  42 + * @param succ 发送成功时回调
  43 + * @param fail 发送失败时回调
  44 + *
  45 + * @return 0:操作成功;1:操作失败
  46 + */
  47 +- (int)sendMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  48 +
  49 +/**
  50 + * 1.2 发送在线消息(无痕消息)
  51 + *
  52 + * “在线消息”,也可以称为是“无痕消息”。跟普通消息的区别在于:在线消息不会被云服务存储,也不会存储于本地数据库中。
  53 + * 如果接收者在线,可以收到消息,但如果接收者离线,重新上线后也不能通过 getMessage() 接口从历史消息里查到它们。
  54 + *
  55 + * 该类型消息比较适合用作发送广播通知等不重要的提示消息。
  56 + *
  57 + * 1. 在线消息不会被计入未读计数
  58 + * 2. 暂不支持在 AVChatRoom 和 BChatRoom 中发送。
  59 + *
  60 + * @param msg 消息体
  61 + * @param succ 成功回调
  62 + * @param fail 失败回调
  63 + *
  64 + * @return 0:操作成功;1:操作失败
  65 + */
  66 +- (int)sendOnlineMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  67 +
  68 +///@}
  69 +
  70 +#pragma mark 二,获取消息
  71 +/////////////////////////////////////////////////////////////////////////////////
  72 +//
  73 +// (二)获取消息
  74 +//
  75 +/////////////////////////////////////////////////////////////////////////////////
  76 +/// @name 获取消息相关接口
  77 +/// @{
  78 +/**
  79 + * 2.1 从云端拉取历史消息
  80 + *
  81 + * 如果用户的网络正常且登录成功,可以通过该接口拉取历史消息,该接口会返回云端存储的历史消息(最多存储7天)。
  82 + *
  83 + * 1. 单聊和群聊消息会在云端免费存储7天,如果希望存储更长时间,可前往
  84 + * ([IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 消息 ->消息漫游时长)进行购买,
  85 + * 具体资费请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673)。
  86 + *
  87 + * 2. 对于图片、语音等资源类消息,获取到的消息体只会包含描述信息,需要通过额外的接口下载数据,
  88 + * 详情请参考 [消息收发](https://cloud.tencent.com/document/product/269/9150)中的 "消息解析" 部分文档。
  89 + *
  90 + * @param count 获取数量
  91 + * @param last 上次最后一条消息,如果 last 为 nil,从最新的消息开始读取
  92 + * @param succ 成功时回调
  93 + * @param fail 失败时回调
  94 + *
  95 + * @return 0:本次操作成功;1:本次操作失败
  96 + */
  97 +- (int)getMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
  98 +
  99 +/**
  100 + * 2.2 从本地数据库中获取历史消息
  101 + *
  102 + * 如果客户网络异常或登录失败,可以通过该接口获取本地存储的历史消息,调用方法和 getMessage() 一致
  103 + * AVChatRoom,BChatRoom 消息数量很大,出于程序性能的考虑,默认不存本地,不能通过这个接口拉取到对应群消息
  104 + *
  105 + * @param count 获取数量
  106 + * @param last 上次最后一条消息
  107 + * @param succ 成功时回调
  108 + * @param fail 失败时回调
  109 + *
  110 + * @return 0:本次操作成功;1:本次操作失败
  111 + */
  112 +- (int)getLocalMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
  113 +
  114 +/**
  115 + * 2.3 获取当前会话的最后一条消息
  116 + *
  117 + * 可用于“装饰”会话列表,目前大多数 App 的会话列表中都会显示该会话的最后一条消息
  118 + *
  119 + * @return 最后一条消息
  120 + */
  121 +- (TIMMessage*)getLastMsg;
  122 +
  123 +///@}
  124 +
  125 +#pragma mark 三,设置消息已读
  126 +/////////////////////////////////////////////////////////////////////////////////
  127 +//
  128 +// (三)设置消息已读
  129 +//
  130 +/////////////////////////////////////////////////////////////////////////////////
  131 +/// @name 设置消息已读
  132 +/// @{
  133 +/**
  134 + * 3.1 标记消息为已读状态
  135 + *
  136 + * 该接口会标记当前消息以及之前的所有消息为已读状态,标记消息为已读状态会有两个作用:
  137 + * 1. 已经被标记为已读的消息不会重复提醒,下次登录或者换一台终端设备登录 IM 时,都不会再次收到该消息的未读提醒。
  138 + * 2. 如果发送者通过 TIMUserConfig -> enableReadReceipt 开启了 “被阅回执”,接收者在标记已读状态时,发送者会收到“被阅提醒”。
  139 + *
  140 + * @note 该接口尚不支持标记单独一条消息,只能标记一批。即标记当前一条消息,之前的消息也会全被标记为已读状态。
  141 + *
  142 + * @param fromMsg 会话内最近一条已读的消息,nil 表示上报最新消息
  143 + * @param succ 成功时回调
  144 + * @param fail 失败时回调
  145 + *
  146 + * @return 0 表示成功
  147 + */
  148 +- (int)setReadMessage:(TIMMessage*)fromMsg succ:(TIMSucc)succ fail:(TIMFail)fail;
  149 +
  150 +/**
  151 + * 3.2 获取会话的未读消息计数
  152 + *
  153 + * 1. 同一个终端登录,在未卸载 APP 的情况下,您可以通过当前接口获取的未读消息的个数。
  154 + * 2. 如果希望换一台终端也能取到同样的未读计数提醒,或者卸载 APP 再重装,未读计数提醒还能保留卸载前的状态,
  155 + * 就需要设置 TIMUserConfig 的 disableAutoReport 为 YES,这样可以开启多终端同步未读提醒。
  156 + *
  157 + * 详情参考 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)
  158 + *
  159 + * @return 返回未读计数
  160 + */
  161 +- (int)getUnReadMessageNum;
  162 +
  163 +///@}
  164 +
  165 +#pragma mark 四,撤回/删除消息
  166 +/////////////////////////////////////////////////////////////////////////////////
  167 +//
  168 +// (四)撤回/删除消息
  169 +//
  170 +/////////////////////////////////////////////////////////////////////////////////
  171 +/// @name 撤回/删除消息相关接口
  172 +/// @{
  173 +/**
  174 + * 4.1 撤回一条已发送的消息(消息发送后 )
  175 + *
  176 + * 1. 消息撤回的有效时间为2分钟,即消息发出2分钟后不能再撤回。
  177 + * 2. 仅支持 C2C 会话和 GROUP 会话中发送的消息,无法撤销 OnlineMessage,也无法撤销 AVChatRoom 和 BChatRoom 中的消息。
  178 + * 3. 您需要在 TIMUserConfig -> TIMMessageRevokeListener 监听 onRevokeMessage() 消息撤回回调,
  179 + * 如果消息撤回成功,消息的接收方会收到一次 onRevokeMessage:(TIMMessageLocator*) 回调,TIMMessageLocator 相当于一条消息的定位标志。
  180 + * 您可以在已收到的历史消息里进行遍历,通过 TIMMessage 中的 respondsToLocator() 接口进行比对,以便定位到该条消息。
  181 + *
  182 + * @param msg 被撤回的消息
  183 + * @param succ 成功时回调
  184 + * @param fail 失败时回调
  185 + *
  186 + * @return 0:本次操作成功;1:本次操作失败
  187 + */
  188 +- (int)revokeMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  189 +
  190 +/**
  191 + * 4.2 删除当前会话的本地历史消息
  192 + *
  193 + * @param succ 成功时回调
  194 + * @param fail 失败时回调
  195 + *
  196 + * @return 0 本次操作成功
  197 + */
  198 +- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail;
  199 +
  200 +///@}
  201 +
  202 +#pragma mark 五,获取会话信息
  203 +/////////////////////////////////////////////////////////////////////////////////
  204 +//
  205 +// (五)获取会话信息
  206 +//
  207 +/////////////////////////////////////////////////////////////////////////////////
  208 +/// @name 获取会话信息相关接口
  209 +/// @{
  210 +
  211 +/**
  212 + * 5.1 获取会话类型
  213 + *
  214 + * @return 会话类型
  215 + */
  216 +- (TIMConversationType)getType;
  217 +
  218 +/**
  219 + * 5.2 获取会话 ID
  220 + *
  221 + * C2C:对方账号;Group:群组Id。
  222 + *
  223 + * 对同一个单聊或则群聊会话,getReceiver 获取的会话 ID 都是固定的,C2C 获取的是对方账号,Group 获取的是群组 Id。
  224 + *
  225 + * @return 会话人
  226 + */
  227 +- (NSString*)getReceiver;
  228 +
  229 +/**
  230 + * 5.3 获取群名称
  231 + *
  232 + * 获取群名称,只有群会话有效。
  233 + *
  234 + * @return 群名称
  235 + */
  236 +- (NSString*)getGroupName;
  237 +
  238 +///@}
  239 +
  240 +#pragma mark 六,草稿箱
  241 +/////////////////////////////////////////////////////////////////////////////////
  242 +//
  243 +// (六)草稿箱
  244 +//
  245 +/////////////////////////////////////////////////////////////////////////////////
  246 +/// @name 草稿箱
  247 +/// @{
  248 +
  249 +/**
  250 + * 6.1 添加未编辑完的草稿消息
  251 + *
  252 + * 在发送消息时,常常会遇到尚未编辑完毕就要切换到其它聊天窗口的情况,这些未编辑完的消息就可以通过 setDraft() 接口存储到草稿箱中。
  253 + * 草稿信息会存本地数据库,重新登录后依然可以获取。
  254 + *
  255 + *
  256 + * @param draft 草稿内容,详情请参考 TIMMessage.h 里面的 TIMMessageDraft 定义
  257 + *
  258 + * @return 0:成功;1:失败
  259 + */
  260 +- (int)setDraft:(TIMMessageDraft*)draft;
  261 +
  262 +/**
  263 + * 6.2 获取未编辑完的草稿消息
  264 + *
  265 + * @return 草稿内容,没有草稿返回 nil
  266 + */
  267 +- (TIMMessageDraft*)getDraft;
  268 +
  269 +///@}
  270 +
  271 +#pragma mark 七,导入消息到会话
  272 +/////////////////////////////////////////////////////////////////////////////////
  273 +//
  274 +// (七)导入消息到会话
  275 +//
  276 +/////////////////////////////////////////////////////////////////////////////////
  277 +/// @name 导入消息到会话相关接口
  278 +/// @{
  279 +/**
  280 + * 7.1 向本地消息列表中添加一条消息,但并不将其发送出去。
  281 + *
  282 + * 该接口主要用于满足向聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示
  283 + * 在聊天消息区的需求,但并没有发送给其他人的必要。
  284 + * 所以 saveMessage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。
  285 + *
  286 + * @param msg 消息体
  287 + * @param sender 发送方
  288 + * @param isRead 是否已读,如果发送方是自己,默认已读
  289 + *
  290 + * @return 0:成功;1:失败
  291 + */
  292 +- (int)saveMessage:(TIMMessage*)msg sender:(NSString*)sender isReaded:(BOOL)isRead;
  293 +
  294 +/**
  295 + * 7.2 将消息导入本地数据库
  296 + *
  297 + * @param msgs 消息(TIMMessage*)列表
  298 + *
  299 + * @return 0:成功;1:失败
  300 + */
  301 +- (int)importMessages:(NSArray*)msgs;
  302 +
  303 +///@}
  304 +@end
  305 +
  306 +
  307 +#endif
  1 +//
  2 +// TIMErrorCode.h
  3 +// ImSDK
  4 +//
  5 +// Created by jameskhdeng on 2018/11/23.
  6 +// Copyright © 2018 tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef TIMErrorCode_h
  10 +#define TIMErrorCode_h
  11 +
  12 +enum ERROR_CODE {
  13 +
  14 + /////////////////////////////////////////////////////////////////////////////////
  15 + //
  16 + // (一)IM SDK 的错误码
  17 + //
  18 + /////////////////////////////////////////////////////////////////////////////////
  19 +
  20 + // 通用错误码
  21 +
  22 + ERR_SUCC = 0, ///< 无错误。
  23 + ERR_IN_PROGESS = 6015, ///< 执行中,请做好接口调用控制,例如,第一次初始化操作在回调前,后续的初始化操作会返回该错误码。
  24 + ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
  25 + ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
  26 + ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
  27 + ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
  28 + ERR_PARSE_RESPONSE_FAILED = 6001, ///< PB 解析失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  29 + ERR_SERIALIZE_REQ_FAILED = 6002, ///< PB 序列化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  30 + ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
  31 + ERR_LOADMSG_FAILED = 6005, ///< 加载本地数据库操作失败,可能存储文件有损坏,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服定位具体问题。
  32 + ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
  33 + ERR_SDK_COMM_CROSS_THREAD = 7001, ///< 跨线程错误,不能在跨越不同线程中执行,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  34 + ERR_SDK_COMM_TINYID_EMPTY = 7002, ///< TinyId 为空,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  35 + ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
  36 + ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
  37 + ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,如果上传文件,最大限制是28MB。
  38 + ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
  39 + ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
  40 +
  41 + // 帐号错误码
  42 +
  43 + ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
  44 + ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
  45 + ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
  46 + ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个帐号,引起已登录的帐号被踢,需重新登录。
  47 + ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
  48 + ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
  49 + ERR_SDK_ACCOUNT_TLS_INIT_FAILED = 7503, ///< TLS SDK 初始化失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  50 + ERR_SDK_ACCOUNT_TLS_NOT_INITIALIZED = 7504, ///< TLS SDK 未初始化,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  51 + ERR_SDK_ACCOUNT_TLS_TRANSPKG_ERROR = 7505, ///< TLS SDK TRANS 包格式错误,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  52 + ERR_SDK_ACCOUNT_TLS_DECRYPT_FAILED = 7506, ///< TLS SDK 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  53 + ERR_SDK_ACCOUNT_TLS_REQUEST_FAILED = 7507, ///< TLS SDK 请求失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  54 + ERR_SDK_ACCOUNT_TLS_REQUEST_TIMEOUT = 7508, ///< TLS SDK 请求超时,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  55 +
  56 + // 消息错误码
  57 +
  58 + ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
  59 + ERR_FILE_TRANS_AUTH_FAILED = 6006, ///< 文件传输鉴权失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  60 + ERR_FILE_TRANS_NO_SERVER = 6007, ///< 文件传输获取 Server 列表失败,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  61 + ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接,如果上传的是图片,确认图片能够正常打开。
  62 + ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
  63 + ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
  64 + ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
  65 + ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
  66 + ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过8k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
  67 + ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
  68 +
  69 + // 群组错误码
  70 +
  71 + ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
  72 + ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  73 + ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  74 + ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  75 + ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
  76 + ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  77 + ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
  78 + ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
  79 + ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
  80 + ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
  81 +
  82 + // 关系链错误码
  83 +
  84 + ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
  85 + ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  86 + ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  87 + ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
  88 + ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
  89 +
  90 + // 网络错误码
  91 +
  92 + ERR_SDK_NET_ENCODE_FAILED = 9501, ///< SSO 加密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  93 + ERR_SDK_NET_DECODE_FAILED = 9502, ///< SSO 解密失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  94 + ERR_SDK_NET_AUTH_INVALID = 9503, ///< SSO 未完成鉴权,可能登录未完成,请在登录完成后再操作。
  95 + ERR_SDK_NET_COMPRESS_FAILED = 9504, ///< 数据包压缩失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  96 + ERR_SDK_NET_UNCOMPRESS_FAILED = 9505, ///< 数据包解压失败,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  97 + ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
  98 + ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
  99 + ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
  100 + ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
  101 + ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
  102 + ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
  103 + ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
  104 + ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
  105 + ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
  106 + ERR_SDK_NET_SOCKET_INVALID = 9515, ///< socket 套接字无效,内部错误,可 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 提供使用接口、错误码、错误信息给客服解决。
  107 + ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
  108 + ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
  109 + ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
  110 + ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,内部错误。
  111 + ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,内部错误。
  112 +
  113 + /////////////////////////////////////////////////////////////////////////////////
  114 + //
  115 + // (二)服务端的错误码
  116 + //
  117 + /////////////////////////////////////////////////////////////////////////////////
  118 +
  119 + // SSO 接入层的错误码
  120 +
  121 + ERR_SVR_SSO_CONNECT_LIMIT = -302 , ///< SSO 的连接数量超出限制,服务端拒绝服务。
  122 + ERR_SVR_SSO_VCODE = -10000, ///< 下发验证码标志错误。
  123 + ERR_SVR_SSO_D2_EXPIRED = -10001, ///< D2 过期。
  124 + ERR_SVR_SSO_A2_UP_INVALID = -10003, ///< A2 校验失败等场景使用。
  125 + ERR_SVR_SSO_A2_DOWN_INVALID = -10004, ///< 处理下行包时发现 A2 验证没通过或者被安全打击。
  126 + ERR_SVR_SSO_EMPTY_KEY = -10005, ///< 不允许空 D2Key 加密。
  127 + ERR_SVR_SSO_UIN_INVALID = -10006, ///< D2 中的 uin 和 SSO 包头的 uin 不匹配。
  128 + ERR_SVR_SSO_VCODE_TIMEOUT = -10007, ///< 验证码下发超时。
  129 + ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, ///< 需要带上 IMEI 和 A2 。
  130 + ERR_SVR_SSO_COOKIE_INVALID = -10009, ///< Cookie 非法。
  131 + ERR_SVR_SSO_DOWN_TIP = -10101, ///< 下发提示语,D2 过期。
  132 + ERR_SVR_SSO_DISCONNECT = -10102, ///< 断链锁屏。
  133 + ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, ///< 失效身份。
  134 + ERR_SVR_SSO_CLIENT_CLOSE = -10104, ///< 终端自动退出。
  135 + ERR_SVR_SSO_MSFSDK_QUIT = -10105, ///< MSFSDK 自动退出。
  136 + ERR_SVR_SSO_D2KEY_WRONG = -10106, ///< SSO D2key 解密失败次数太多,通知终端需要重置,重新刷新 D2 。
  137 + ERR_SVR_SSO_UNSURPPORT = -10107, ///< 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
  138 + ERR_SVR_SSO_PREPAID_ARREARS = -10108, ///< 预付费欠费。
  139 + ERR_SVR_SSO_PACKET_WRONG = -10109, ///< 请求包格式错误。
  140 + ERR_SVR_SSO_APPID_BLACK_LIST = -10110, ///< SDKAppID 黑名单。
  141 + ERR_SVR_SSO_CMD_BLACK_LIST = -10111, ///< SDKAppID 设置 service cmd 黑名单。
  142 + ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, ///< SDKAppID 停用。
  143 + ERR_SVR_SSO_FREQ_LIMIT = -10113, ///< 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
  144 + ERR_SVR_SSO_OVERLOAD = -10114, ///< 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
  145 +
  146 + // 资源文件错误码
  147 +
  148 + ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
  149 + ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
  150 + ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
  151 + ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
  152 + ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
  153 + ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
  154 + ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
  155 + ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
  156 + ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
  157 +
  158 + // 后台公共错误码
  159 +
  160 + ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
  161 + ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
  162 + ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
  163 + ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
  164 + ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
  165 + ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
  166 + ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
  167 + ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
  168 + ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员帐号。
  169 + ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
  170 + ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
  171 + ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
  172 + ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换帐号超时。
  173 + ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
  174 + ERR_SVR_COMM_SDKAPPID_FORBIDDEN = 60016, ///< SDKAppID 被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
  175 + ERR_SVR_COMM_REQ_FORBIDDEN = 60017, ///< 请求被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服确认。
  176 + ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
  177 + ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
  178 + ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
  179 + ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
  180 + ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大8k消息包体长度,请减少包体大小重试。
  181 +
  182 + // 帐号错误码
  183 +
  184 + ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
  185 + ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
  186 + ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
  187 + ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
  188 + ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
  189 + ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
  190 + ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
  191 + ERR_SVR_ACCOUNT_USERSIG_PUBLICKEY_NOT_FOUND = 70016, ///< 验证 UserSig 时公钥不存在。请先登录控制台下载私钥,下载私钥的具体方法可参考 [下载签名用的私钥](https://cloud.tencent.com/document/product/269/32688#.E4.B8.8B.E8.BD.BD.E7.AD.BE.E5.90.8D.E7.94.A8.E7.9A.84.E7.A7.81.E9.92.A5) 。
  192 + ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
  193 + ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
  194 + ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户帐号不存在。
  195 + ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
  196 + ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
  197 + ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
  198 + ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
  199 + ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
  200 + ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
  201 + ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 帐号被拉入黑名单。
  202 + ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建帐号数量超过免费体验版数量限制,请升级为专业版。
  203 + ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
  204 +
  205 + // 资料错误码
  206 +
  207 + ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
  208 + ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户帐号。
  209 + ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户帐号不存在。
  210 + ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
  211 + ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
  212 + ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
  213 + ERR_SVR_PROFILE_READ_PERMISSION_REQUIRED = 40007, ///< 没有资料字段的读权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
  214 + ERR_SVR_PROFILE_WRITE_PERMISSION_REQUIRED = 40008, ///< 没有资料字段的写权限,详情可参见 [资料字段](https://cloud.tencent.com/document/product/269/1500#.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
  215 + ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
  216 + ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
  217 + ERR_SVR_PROFILE_VALUE_ERROR = 40605, ///< 标配资料字段的 Value 错误,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
  218 + ERR_SVR_PROFILE_INVALID_VALUE_FORMAT = 40610, ///< 资料字段的 Value 类型不匹配,详情可参见 [标配资料字段](https://cloud.tencent.com/doc/product/269/1500#.E6.A0.87.E9.85.8D.E8.B5.84.E6.96.99.E5.AD.97.E6.AE.B5) 。
  219 +
  220 + // 关系链错误码
  221 +
  222 + ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
  223 + ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
  224 + ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户帐号不存在。
  225 + ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
  226 + ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
  227 + ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
  228 + ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
  229 + ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
  230 + ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
  231 + ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
  232 + ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
  233 + ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
  234 + ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
  235 + ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
  236 + ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
  237 + ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
  238 + ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
  239 + ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
  240 + ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
  241 + ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
  242 + ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的帐号之间不存在好友关系。
  243 + ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
  244 + ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户帐号不存在。
  245 +
  246 + // 最近联系人错误码
  247 +
  248 + ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户帐号不存在。
  249 + ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
  250 + ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
  251 + ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
  252 + ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
  253 +
  254 + // 消息错误码
  255 +
  256 + ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方帐号是否存在。
  257 + ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
  258 + ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
  259 + ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
  260 + ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
  261 + ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
  262 + ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
  263 + ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
  264 + ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
  265 + ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
  266 + ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
  267 + ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
  268 + ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
  269 + ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
  270 + ERR_SVR_MSG_INVALID_JSON_BODY_FORMAT = 90002, ///< JSON 格式请求包中 MsgBody 不符合消息格式描述,或者 MsgBody 不是 Array 类型,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
  271 + ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
  272 + ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
  273 + ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
  274 + ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
  275 + ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
  276 + ERR_SVR_MSG_INVALID_JSON_FORMAT = 90010, ///< JSON 格式请求包不符合消息格式描述,请参考 [TIMMsgElement 对象](https://cloud.tencent.com/document/product/269/2720#.E6.B6.88.E6.81.AF.E5.85.83.E7.B4.A0timmsgelement) 的定义。
  277 + ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标帐号超过500,请减少 To_Account 中目标帐号数量。
  278 + ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
  279 + ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
  280 + ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
  281 + ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
  282 + ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户帐号不存在。
  283 + ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
  284 + ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
  285 + ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
  286 + ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
  287 + ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过8k。
  288 + ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
  289 + // 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
  290 +
  291 + // 群组错误码
  292 +
  293 + ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
  294 + ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
  295 + ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
  296 + ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的帐号数量过多。
  297 + ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
  298 + ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
  299 + ERR_SVR_GROUP_INVALID_REQ = 10008, ///< 请求非法,可能是请求中携带的签名信息验证不正确,请再次尝试或 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系技术客服。
  300 + ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
  301 + ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
  302 + ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
  303 + ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
  304 + ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
  305 + ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
  306 + ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
  307 + ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
  308 + ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
  309 + ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
  310 + ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户帐号不存在。
  311 + ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
  312 + ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
  313 + ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
  314 + ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
  315 + ERR_SVR_GROUP_SDKAPPID_DENY = 10026, ///< 该 SDKAppID 请求的命令字已被禁用,请 [提交工单](https://console.cloud.tencent.com/workorder/category?level1_id=29&level2_id=40&source=0&data_title=%E4%BA%91%E9%80%9A%E4%BF%A1%20%20IM&step=1) 联系客服。
  316 + ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
  317 + ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
  318 + ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
  319 + ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
  320 + ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
  321 + ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
  322 + ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
  323 + ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
  324 + ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
  325 +
  326 + /////////////////////////////////////////////////////////////////////////////////
  327 + //
  328 + // (三)IM SDK V3 版本的错误码
  329 + //
  330 + /////////////////////////////////////////////////////////////////////////////////
  331 +
  332 + ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
  333 + ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
  334 + ERR_REQUEST_TIMEOUT = 6012, ///< 请求超时。
  335 + ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
  336 + ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
  337 + ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
  338 + ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
  339 + ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
  340 + ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
  341 + ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
  342 + ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
  343 + ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
  344 + ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
  345 + ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
  346 + ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
  347 + ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
  348 + ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
  349 + ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
  350 + ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
  351 + ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
  352 + ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
  353 + ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
  354 + ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
  355 + ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
  356 + ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
  357 + ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
  358 + ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
  359 + ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
  360 + ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
  361 + ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
  362 + ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
  363 + ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
  364 + ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
  365 + ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
  366 + ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
  367 + ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
  368 + ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
  369 + ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
  370 + ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
  371 + ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
  372 + ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
  373 + ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
  374 + ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
  375 + ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
  376 + ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
  377 + ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
  378 + ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
  379 + ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
  380 + ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
  381 + ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
  382 + ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
  383 + ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
  384 + ERR_USER_CANCELED = 6222, ///< 用户已取消。
  385 + ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
  386 + ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
  387 + ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
  388 + ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
  389 + ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
  390 + ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
  391 + ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
  392 + ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
  393 + ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
  394 + ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
  395 + ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
  396 + ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
  397 + ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
  398 + ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
  399 + ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
  400 + ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
  401 + ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
  402 +
  403 +};
  404 +
  405 +#endif /* TIMErrorCode_h */
  1 +//
  2 +// TIMFriendshipDefine.h
  3 +// imsdk
  4 +//
  5 +// Created by annidyfeng on 2019/3/7.
  6 +// Copyright © 2019年 Tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef TIMFriendshipDefine_h
  10 +#define TIMFriendshipDefine_h
  11 +
  12 +#import "ImSDK.h"
  13 +
  14 +@class TIMFriendPendencyResponse;
  15 +@class TIMFriendPendencyItem;
  16 +@class TIMFriendFutureMeta;
  17 +@class TIMFriendGroup;
  18 +@class TIMFriendGetResult;
  19 +
  20 +#pragma mark - 枚举类型
  21 +
  22 +/**
  23 + * 好友操作状态
  24 + *
  25 + * 详细错误码参见 https://cloud.tencent.com/document/product/269/1671#.E5.85.B3.E7.B3.BB.E9.93.BE.E9.94.99.E8.AF.AF.E7.A0.81
  26 + */
  27 +typedef NS_ENUM(NSInteger, TIMFriendStatus) {
  28 + /**
  29 + * 操作成功
  30 + */
  31 + TIM_FRIEND_STATUS_SUCC = 0,
  32 +
  33 + /**
  34 + * 请求参数错误,请根据错误描述检查请求是否正确
  35 + */
  36 + TIM_FRIEND_PARAM_INVALID = 30001,
  37 +
  38 + /**
  39 + * 请求参数错误,SdkAppid 不匹配。
  40 + */
  41 + TIM_FRIEND_SDK_APPID_INVALID = 30002,
  42 +
  43 + /**
  44 + * 请求的用户帐号不存在
  45 + */
  46 + TIM_FRIEND_ID_INVALID = 30003,
  47 +
  48 + /**
  49 + * 请求需要 App 管理员权限
  50 + */
  51 + TIM_FRIEND_NEED_ADMIN_PERMISSON = 30004,
  52 +
  53 + /**
  54 + * 关系链字段中包含敏感词
  55 + */
  56 + TIM_FRIEND_DIRTY_WORD = 30005,
  57 +
  58 + /**
  59 + * 服务器内部错误,请重试
  60 + */
  61 + TIM_FRIEND_SERVER_ERROR = 30006,
  62 +
  63 + /**
  64 + * 网络超时,请稍后重试
  65 + */
  66 + TIM_FRIEND_TIMEOUT = 30007,
  67 +
  68 + /**
  69 + * 并发写导致写冲突,建议使用批量方式
  70 + */
  71 + TIM_FRIEND_WRITE_ERROR = 30008,
  72 +
  73 + /**
  74 + * 后台禁止该用户发起加好友请求
  75 + */
  76 + TIM_ADD_FRIEND_FORBIDEN = 30009,
  77 +
  78 + /**
  79 + * 自己的好友数已达系统上限
  80 + */
  81 + TIM_ADD_FRIEND_STATUS_SELF_FRIEND_FULL = 30010,
  82 +
  83 + /**
  84 + * 分组已达系统上限
  85 + */
  86 + TIM_UPDATE_FRIEND_GROUP_STATUS_MAX_GROUPS_EXCEED = 30011,
  87 +
  88 + /**
  89 + * 未决数已达系统上限。
  90 + */
  91 + TIM_PENDENCY_STATUS_FULL = 30012,
  92 +
  93 + /**
  94 + * 黑名单数已达系统上限
  95 + */
  96 + TIM_ADD_BLACKLIST_STATUS_FULL = 30013,
  97 +
  98 + /**
  99 + * 对方的好友数已达系统上限
  100 + */
  101 + TIM_ADD_FRIEND_STATUS_THEIR_FRIEND_FULL = 30014,
  102 +
  103 + /**
  104 + * 被加好友在自己的黑名单中
  105 + */
  106 + TIM_ADD_FRIEND_STATUS_IN_SELF_BLACK_LIST = 30515,
  107 +
  108 + /**
  109 + * 被加好友设置为禁止加好友
  110 + */
  111 + TIM_ADD_FRIEND_STATUS_FRIEND_SIDE_FORBID_ADD = 30516,
  112 +
  113 + /**
  114 + * 已被被添加好友设置为黑名单
  115 + */
  116 + TIM_ADD_FRIEND_STATUS_IN_OTHER_SIDE_BLACK_LIST = 30525,
  117 +
  118 + /**
  119 + * 等待好友审核同意
  120 + */
  121 + TIM_ADD_FRIEND_STATUS_PENDING = 30539,
  122 +
  123 + /**
  124 + * 添加好友请求被安全策略打击,请勿频繁发起添加好友请求
  125 + */
  126 + TIM_ADD_FRIEND_STATUS_SENSITIVE = 30540,
  127 +
  128 + /**
  129 + * 对方没有申请过好友
  130 + */
  131 + TIM_RESPONSE_FRIEND_STATUS_NO_REQ = 30614,
  132 +
  133 + /**
  134 + * 删除好友请求被安全策略打击,请勿频繁发起删除好友请求
  135 + */
  136 + TIM_DELETE_FRIEND_STATUS_SENSITIVE = 31707,
  137 +};
  138 +
  139 +typedef NS_ENUM(NSInteger, TIMDelFriendType) {
  140 + /**
  141 + * 删除单向好友
  142 + */
  143 + TIM_FRIEND_DEL_SINGLE = 1,
  144 +
  145 + /**
  146 + * 删除双向好友
  147 + */
  148 + TIM_FRIEND_DEL_BOTH = 2,
  149 +};
  150 +
  151 +typedef NS_ENUM(NSInteger, TIMPendencyType) {
  152 + /**
  153 + * 别人发给我的
  154 + */
  155 + TIM_PENDENCY_COME_IN = 1,
  156 +
  157 + /**
  158 + * 我发给别人的
  159 + */
  160 + TIM_PENDENCY_SEND_OUT = 2,
  161 +
  162 + /**
  163 + * 别人发给我的 和 我发给别人的。仅拉取时有效
  164 + */
  165 + TIM_PENDENCY_BOTH = 3,
  166 +};
  167 +
  168 +/**
  169 + * 推荐好友类型
  170 + */
  171 +typedef NS_ENUM(NSInteger, TIMFutureFriendType) {
  172 + /**
  173 + * 收到的未决请求
  174 + */
  175 + TIM_FUTURE_FRIEND_PENDENCY_IN_TYPE = 0x1,
  176 +
  177 + /**
  178 + * 发出去的未决请求
  179 + */
  180 + TIM_FUTURE_FRIEND_PENDENCY_OUT_TYPE = 0x2,
  181 +
  182 + /**
  183 + * 推荐好友
  184 + */
  185 + TIM_FUTURE_FRIEND_RECOMMEND_TYPE = 0x4,
  186 +
  187 + /**
  188 + * 已决好友
  189 + */
  190 + TIM_FUTURE_FRIEND_DECIDE_TYPE = 0x8,
  191 +};
  192 +
  193 +/**
  194 + * 翻页选项
  195 + */
  196 +typedef NS_ENUM(NSInteger, TIMPageDirectionType) {
  197 + /**
  198 + * 向上翻页
  199 + */
  200 + TIM_PAGE_DIRECTION_UP_TYPE = 1,
  201 +
  202 + /**
  203 + * 向下翻页
  204 + */
  205 + TIM_PAGE_DIRECTION_DOWN_TYPE = 2,
  206 +};
  207 +
  208 +/**
  209 + * 好友检查类型
  210 + */
  211 +typedef NS_ENUM(NSInteger,TIMFriendCheckType) {
  212 + /**
  213 + * 单向好友
  214 + */
  215 + TIM_FRIEND_CHECK_TYPE_UNIDIRECTION = 0x1,
  216 + /**
  217 + * 互为好友
  218 + */
  219 + TIM_FRIEND_CHECK_TYPE_BIDIRECTION = 0x2,
  220 +};
  221 +
  222 +/**
  223 + * 好友关系类型
  224 + */
  225 +typedef NS_ENUM(NSInteger,TIMFriendRelationType) {
  226 + /**
  227 + * 不是好友
  228 + */
  229 + TIM_FRIEND_RELATION_TYPE_NONE = 0x0,
  230 + /**
  231 + * 对方在我的好友列表中
  232 + */
  233 + TIM_FRIEND_RELATION_TYPE_MY_UNI = 0x1,
  234 + /**
  235 + * 我在对方的好友列表中
  236 + */
  237 + TIM_FRIEND_RELATION_TYPE_OTHER_UNI = 0x2,
  238 + /**
  239 + * 互为好友
  240 + */
  241 + TIM_FRIEND_RELATION_TYPE_BOTHWAY = 0x3,
  242 +};
  243 +
  244 +typedef NS_ENUM(NSInteger, TIMFriendResponseType) {
  245 + /**
  246 + * 同意加好友(建立单向好友)
  247 + */
  248 + TIM_FRIEND_RESPONSE_AGREE = 0,
  249 +
  250 + /**
  251 + * 同意加好友并加对方为好友(建立双向好友)
  252 + */
  253 + TIM_FRIEND_RESPONSE_AGREE_AND_ADD = 1,
  254 +
  255 + /**
  256 + * 拒绝对方好友请求
  257 + */
  258 + TIM_FRIEND_RESPONSE_REJECT = 2,
  259 +};
  260 +
  261 +/**
  262 + * 好友检查类型
  263 + */
  264 +typedef NS_ENUM(NSInteger,TIMFriendAddType) {
  265 + /**
  266 + * 单向好友
  267 + */
  268 + TIM_FRIEND_ADD_TYPE_SINGLE = 1,
  269 + /**
  270 + * 互为好友
  271 + */
  272 + TIM_FRIEND_ADD_TYPE_BOTH = 2,
  273 +};
  274 +#pragma mark - block回调
  275 +
  276 +/**
  277 + * 获取指定好友资料请求
  278 + */
  279 +typedef void (^TIMFriendGetResultSucc)(NSArray<TIMFriendGetResult *> *friendGetResults);
  280 +
  281 +/**
  282 + * 获取未决请求列表成功
  283 + *
  284 + * @param pendencyResponse 未决请求元信息
  285 + */
  286 +typedef void (^TIMGetFriendPendencyListSucc)(TIMFriendPendencyResponse *pendencyResponse);
  287 +
  288 +/**
  289 + * 群搜索回调
  290 + *
  291 + * @param totalNum 搜索结果的总数
  292 + * @param users 请求的用户列表片段
  293 + */
  294 +typedef void (^TIMUserSearchSucc)(uint64_t totalNum, NSArray * users);
  295 +
  296 +/**
  297 + * 好友分组列表
  298 + *
  299 + * @param groups 好友分组(TIMFriendGroup*)列表
  300 + */
  301 +typedef void (^TIMFriendGroupArraySucc)(NSArray<TIMFriendGroup *> * groups);
  302 +
  303 +/**
  304 + * 好友关系检查回调
  305 + *
  306 + * @param results TIMCheckFriendResult列表
  307 + */
  308 +typedef void (^TIMFriendCheckSucc)(NSArray* results);
  309 +
  310 +#pragma mark - 基本类型
  311 +/**
  312 + * 获取指定好友资料请求
  313 + */
  314 +@interface TIMFriendGetResult : TIMCodingModel
  315 +
  316 +/**
  317 + * 返回码
  318 + */
  319 +@property(nonatomic,assign) int resultCode;
  320 +
  321 +/**
  322 + * 返结果表述
  323 + */
  324 +@property(nonatomic,strong) NSString *resultInfo;
  325 +
  326 +/**
  327 + * 好友类型
  328 + */
  329 +@property(nonatomic,assign) TIMFriendRelationType relation;
  330 +
  331 +/**
  332 + * 获取好友资料,如果不是好友除了 identifier 字段,其他字段都为空
  333 + */
  334 +@property(nonatomic,strong) TIMFriend *timFriend;
  335 +@end
  336 +
  337 +/**
  338 + * 加好友请求
  339 + */
  340 +@interface TIMFriendRequest : TIMCodingModel
  341 +
  342 +/**
  343 + * 用户identifier(必填)
  344 + */
  345 +@property (nonatomic,strong) NSString* identifier;
  346 +
  347 +/**
  348 + * 备注(备注最大96字节)
  349 + */
  350 +@property (nonatomic,strong) NSString* remark;
  351 +
  352 +/**
  353 + * 请求说明(最大120字节)
  354 + */
  355 +@property (nonatomic,strong) NSString* addWording;
  356 +
  357 +/**
  358 + * 添加来源
  359 + * 来源需要添加“AddSource_Type_”前缀
  360 + */
  361 +@property (nonatomic,strong) NSString* addSource;
  362 +
  363 +/**
  364 + * 分组
  365 + */
  366 +@property (nonatomic,strong) NSString* group;
  367 +
  368 +/**
  369 + * 加好友方式 (可选)
  370 + */
  371 +@property (nonatomic,assign) TIMFriendAddType addType;
  372 +
  373 +@end
  374 +
  375 +/**
  376 + * 未决请求
  377 + */
  378 +@interface TIMFriendPendencyItem : TIMCodingModel
  379 +
  380 +/**
  381 + * 用户标识
  382 + */
  383 +@property(nonatomic,strong) NSString* identifier;
  384 +/**
  385 + * 增加时间
  386 + */
  387 +@property(nonatomic,assign) uint64_t addTime;
  388 +/**
  389 + * 来源
  390 + */
  391 +@property(nonatomic,strong) NSString* addSource;
  392 +/**
  393 + * 加好友附言
  394 + */
  395 +@property(nonatomic,strong) NSString* addWording;
  396 +
  397 +/**
  398 + * 加好友昵称
  399 + */
  400 +@property(nonatomic,strong) NSString* nickname;
  401 +
  402 +/**
  403 + * 未决请求类型
  404 + */
  405 +@property(nonatomic,assign) TIMPendencyType type;
  406 +
  407 +@end
  408 +
  409 +/**
  410 + * 未决推送
  411 + */
  412 +@interface TIMFriendPendencyInfo : TIMCodingModel
  413 +/**
  414 + * 用户标识
  415 + */
  416 +@property(nonatomic,strong) NSString* identifier;
  417 +/**
  418 + * 来源
  419 + */
  420 +@property(nonatomic,strong) NSString* addSource;
  421 +/**
  422 + * 加好友附言
  423 + */
  424 +@property(nonatomic,strong) NSString* addWording;
  425 +
  426 +/**
  427 + * 加好友昵称
  428 + */
  429 +@property(nonatomic,strong) NSString* nickname;
  430 +@end
  431 +
  432 +/**
  433 + * 未决请求信息
  434 + */
  435 +@interface TIMFriendPendencyRequest : TIMCodingModel
  436 +
  437 +/**
  438 + * 序列号,未决列表序列号
  439 + * 建议客户端保存seq和未决列表,请求时填入server返回的seq
  440 + * 如果seq是server最新的,则不返回数据
  441 + */
  442 +@property(nonatomic,assign) uint64_t seq;
  443 +
  444 +/**
  445 + * 翻页时间戳,只用来翻页,server返回0时表示没有更多数据,第一次请求填0
  446 + * 特别注意的是,如果server返回的seq跟填入的seq不同,翻页过程中,需要使用客户端原始seq请求,直到数据请求完毕,才能更新本地seq
  447 + */
  448 +@property(nonatomic,assign) uint64_t timestamp;
  449 +
  450 +/**
  451 + * 每页的数量,即本次请求最多返回多个数据,最大不超过 100,设置太大一次请求回包的时间会过长。默认值100
  452 + * 注意:后台最多只保存100条未决
  453 + */
  454 +@property(nonatomic,assign) uint64_t numPerPage;
  455 +
  456 +/**
  457 + * 未决请求拉取类型
  458 + */
  459 +@property(nonatomic,assign) TIMPendencyType type;
  460 +
  461 +@end
  462 +
  463 +/**
  464 + * 未决返回信息
  465 + */
  466 +@interface TIMFriendPendencyResponse : TIMCodingModel
  467 +
  468 +/**
  469 + * 本次请求的未决列表序列号
  470 + */
  471 +@property(nonatomic,assign) uint64_t seq;
  472 +
  473 +/**
  474 + * 本次请求的翻页时间戳
  475 + */
  476 +@property(nonatomic,assign) uint64_t timestamp;
  477 +
  478 +/**
  479 + * 未决请求未读数量
  480 + */
  481 +@property(nonatomic,assign) uint64_t unreadCnt;
  482 +
  483 +/**
  484 + * 未决数据
  485 + */
  486 +@property NSArray<TIMFriendPendencyItem *> * pendencies;
  487 +
  488 +@end
  489 +
  490 +/**
  491 + * 好友分组信息
  492 + */
  493 +@interface TIMFriendGroup : TIMCodingModel
  494 +/**
  495 + * 好友分组名称
  496 + */
  497 +@property(nonatomic,strong) NSString* name;
  498 +
  499 +/**
  500 + * 分组成员数量
  501 + */
  502 +@property(nonatomic,assign) uint64_t userCnt;
  503 +
  504 +/**
  505 + * 分组成员identifier列表
  506 + */
  507 +@property(nonatomic,strong) NSArray* friends;
  508 +
  509 +@end
  510 +
  511 +/**
  512 + * 好友关系检查
  513 + */
  514 +@interface TIMFriendCheckInfo : NSObject
  515 +/**
  516 + * 检查用户的id列表(NSString*)
  517 + */
  518 +@property(nonatomic,strong) NSArray* users;
  519 +
  520 +/**
  521 + * 检查类型
  522 + */
  523 +@property(nonatomic,assign) TIMFriendCheckType checkType;
  524 +
  525 +@end
  526 +
  527 +@interface TIMCheckFriendResult : NSObject
  528 +/**
  529 + * 用户id
  530 + */
  531 +@property NSString* identifier;
  532 +
  533 +/**
  534 + * 返回码
  535 + */
  536 +@property NSInteger result_code;
  537 +
  538 +/**
  539 + * 返回信息
  540 + */
  541 +@property NSString *result_info;
  542 +
  543 +/**
  544 + * 检查结果
  545 + */
  546 +@property(nonatomic,assign) TIMFriendRelationType resultType;
  547 +
  548 +@end
  549 +
  550 +@interface TIMFriendResult : NSObject
  551 +
  552 +/**
  553 + * 用户Id
  554 + */
  555 +@property NSString* identifier;
  556 +
  557 +/**
  558 + * 返回码
  559 + */
  560 +@property NSInteger result_code;
  561 +
  562 +/**
  563 + * 返回信息
  564 + */
  565 +@property NSString *result_info;
  566 +
  567 +@end
  568 +
  569 +/**
  570 + * 响应好友请求
  571 + */
  572 +@interface TIMFriendResponse : NSObject
  573 +
  574 +/**
  575 + * 响应类型
  576 + */
  577 +@property(nonatomic,assign) TIMFriendResponseType responseType;
  578 +
  579 +/**
  580 + * 用户identifier
  581 + */
  582 +@property(nonatomic,strong) NSString* identifier;
  583 +
  584 +/**
  585 + * 备注好友(可选,如果要加对方为好友)。备注最大96字节
  586 + */
  587 +@property(nonatomic,strong) NSString* remark;
  588 +
  589 +@end
  590 +
  591 +
  592 +/**
  593 + * 好友分组信息扩展
  594 + */
  595 +@interface TIMFriendGroupWithProfiles : TIMFriendGroup
  596 +/**
  597 + * 好友资料(TIMUserProfile*)列表
  598 + */
  599 +@property(nonatomic,strong) NSArray* profiles;
  600 +@end
  601 +
  602 +// 用户资料KEY
  603 +
  604 +/**
  605 + * 昵称
  606 + * 值类型: NSString
  607 + */
  608 +extern NSString *const TIMProfileTypeKey_Nick;
  609 +/**
  610 + * 头像
  611 + * 值类型: NSString
  612 + */
  613 +extern NSString *const TIMProfileTypeKey_FaceUrl;
  614 +/**
  615 + * 好友申请
  616 + * 值类型: NSNumber [TIM_FRIEND_ALLOW_ANY,TIM_FRIEND_NEED_CONFIRM,TIM_FRIEND_DENY_ANY]
  617 + */
  618 +extern NSString *const TIMProfileTypeKey_AllowType;
  619 +/**
  620 + * 性别
  621 + * 值类型: NSNumber [TIM_GENDER_UNKNOWN,TIM_GENDER_MALE,TIM_GENDER_FEMALE]
  622 + */
  623 +extern NSString *const TIMProfileTypeKey_Gender;
  624 +/**
  625 + * 生日
  626 + * 值类型: NSNumber
  627 + */
  628 +extern NSString *const TIMProfileTypeKey_Birthday;
  629 +/**
  630 + * 位置
  631 + * 值类型: NSString
  632 + */
  633 +extern NSString *const TIMProfileTypeKey_Location;
  634 +/**
  635 + * 语言
  636 + * 值类型: NSNumber
  637 + */
  638 +extern NSString *const TIMProfileTypeKey_Language;
  639 +/**
  640 + * 等级
  641 + * 值类型: NSNumber
  642 + */
  643 +extern NSString *const TIMProfileTypeKey_Level;
  644 +/**
  645 + * 角色
  646 + * 值类型: NSNumber
  647 + */
  648 +extern NSString *const TIMProfileTypeKey_Role;
  649 +/**
  650 + * 签名
  651 + * 值类型: NSString
  652 + */
  653 +extern NSString *const TIMProfileTypeKey_SelfSignature;
  654 +/**
  655 + * 自定义字段前缀
  656 + * 值类型: [NSString,NSData|NSNumber]
  657 + * @note 当设置自定义字的值NSString对象时,后台会将其转为UTF8保存在数据库中。由于部分用户迁移资料时可能不是UTF8类型,所以在获取资料时,统一返回NSData类型。
  658 + */
  659 +extern NSString *const TIMProfileTypeKey_Custom_Prefix;
  660 +/**
  661 + * 备注
  662 + * 值类型: NSString
  663 + */
  664 +extern NSString *const TIMFriendTypeKey_Remark;
  665 +/**
  666 + * 分组
  667 + * 值类型: [NSArray]
  668 + */
  669 +extern NSString *const TIMFriendTypeKey_Group;
  670 +/**
  671 + * 自定义字段前缀
  672 + * 值类型: [NSString,NSData|NSNumber]
  673 + */
  674 +extern NSString *const TIMFriendTypeKey_Custom_Prefix;
  675 +#endif /* TIMFriendshipDefine_h */
  676 +
  1 +//
  2 +// TIMFriendshipManager.h
  3 +// imsdk
  4 +//
  5 +// Created by annidyfeng on 2019/3/7.
  6 +// Copyright © 2019年 Tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef TIMFriendshipManager_h
  10 +#define TIMFriendshipManager_h
  11 +
  12 +#import "TIMComm.h"
  13 +#import "TIMFriendshipDefine.h"
  14 +
  15 +@interface TIMFriendshipManager : NSObject
  16 +/**
  17 + * 获取好友管理器实例
  18 + *
  19 + * @return 管理器实例
  20 + */
  21 ++ (TIMFriendshipManager*)sharedInstance;
  22 +
  23 +/**
  24 + * 设置自己的资料
  25 + *
  26 + * @param values 需要更新的属性,可一次更新多个字段. 参见 TIMFriendshipDefine.h 的 TIMProfileTypeKey_XXX
  27 + * @param succ 成功回调
  28 + * @param fail 失败回调
  29 + *
  30 + * @return 0 发送请求成功
  31 + */
  32 +- (int)modifySelfProfile:(NSDictionary<NSString *, id> *)values succ:(TIMSucc)succ fail:(TIMFail)fail;
  33 +
  34 +/**
  35 + * 获取自己的资料
  36 + *
  37 + * @param succ 成功回调,返回 TIMUserProfile
  38 + * @param fail 失败回调
  39 + *
  40 + * @return 0 发送请求成功
  41 + */
  42 +- (int)getSelfProfile:(TIMGetProfileSucc)succ fail:(TIMFail)fail;
  43 +
  44 +/**
  45 + * 在缓存中查询自己的资料
  46 + *
  47 + * @return 返回缓存的资料,未找到返回nil
  48 + */
  49 +- (TIMUserProfile *)querySelfProfile;
  50 +
  51 +/**
  52 + * 获取指定用户资料
  53 + *
  54 + * @param identifiers 用户id,非好友的用户也可以
  55 + * @prarm forceUpdate 强制从后台拉取
  56 + * @param succ 成功回调
  57 + * @param fail 失败回调
  58 + *
  59 + * @return 0 发送请求成功
  60 + */
  61 +- (int)getUsersProfile:(NSArray<NSString *> *)identifiers forceUpdate:(BOOL)forceUpdate succ:(TIMUserProfileArraySucc)succ fail:(TIMFail)fail;
  62 +
  63 +/**
  64 + * 在缓存中查询用户的资料
  65 + *
  66 + * @praram identifier 用户id,非好友的用户也可以
  67 + *
  68 + * @return 返回缓存的资料,未找到返回nil
  69 + */
  70 +- (TIMUserProfile *)queryUserProfile:(NSString *)identifier;
  71 +
  72 +/**
  73 + * 获取好友列表
  74 + *
  75 + * @param succ 成功回调,返回好友(TIMFriend)列表
  76 + * @param fail 失败回调
  77 + *
  78 + * @return 0 发送请求成功
  79 + */
  80 +- (int)getFriendList:(TIMFriendArraySucc)succ fail:(TIMFail)fail;
  81 +
  82 +/**
  83 + * 获取指定好友资料
  84 + *
  85 + * @param succ 成功回调,返回好友(TIMFriend)列表
  86 + * @param fail 失败回调
  87 + *
  88 + * @return 0 发送请求成功
  89 +*/
  90 +- (int)getFriendList:(NSArray<NSString *> *)identifiers succ:(TIMFriendGetResultSucc)succ fail:(TIMFail)fail;
  91 +
  92 +
  93 +/**
  94 + * 在缓存中查询用户的关系链数据
  95 + *
  96 + * @praram identifier 用户id
  97 + *
  98 + * @return 返回缓存的关系链数据,未找到返回nil
  99 + * @note 缓存数据来自于上一次调用getFriendList,请确保已调用了获取好友列表方法
  100 + */
  101 +- (TIMFriend *)queryFriend:(NSString *)identifier;
  102 +
  103 +/**
  104 + * 获取缓存中的关系链列表
  105 + *
  106 + * @return 返回缓存的关系链数据
  107 + * @note 缓存数据来自于上一次调用getFriendList,请确保已调用了获取好友列表方法
  108 + */
  109 +- (NSArray<TIMFriend *> *)queryFriendList;
  110 +
  111 +/**
  112 + * 检查指定用户的好友关系
  113 + *
  114 + * @param checkInfo 好友检查信息
  115 + * @param succ 成功回调,返回检查结果
  116 + * @param fail 失败回调
  117 + *
  118 + * @return 0:发送成功;-1:checkInfo->users 参数异常;-2:checkInfo->checkType 参数异常
  119 + */
  120 +- (int)checkFriends:(TIMFriendCheckInfo *)checkInfo succ:(TIMCheckFriendResultArraySucc)succ fail:(TIMFail)fail;
  121 +
  122 +/**
  123 + * 添加好友
  124 + *
  125 + * @param request 添加好友请求
  126 + * @param succ 成功回调(TIMFriendResult)
  127 + * @param fail 失败回调
  128 + *
  129 + * @return 0 发送请求成功
  130 + */
  131 +- (int)addFriend:(TIMFriendRequest *)request succ:(TIMFriendResultSucc)succ fail:(TIMFail)fail;
  132 +
  133 +/**
  134 + * 响应对方好友邀请
  135 + *
  136 + * @param response 响应请求
  137 + * @param succ 成功回调
  138 + * @param fail 失败回调
  139 + *
  140 + * @return 0 发送请求成功
  141 + */
  142 +- (int)doResponse:(TIMFriendResponse *)response succ:(TIMFriendResultSucc)succ fail:(TIMFail)fail;
  143 +
  144 +/**
  145 + * 删除好友
  146 + *
  147 + * @param identifiers 好友id
  148 + * @param delType 删除类型(单向好友、双向好友)
  149 + * @param succ 成功回调([TIMFriendResult])
  150 + * @param fail 失败回调
  151 + *
  152 + * @return 0 发送请求成功
  153 + */
  154 +- (int)deleteFriends:(NSArray *)identifiers delType:(TIMDelFriendType)delType succ:(TIMFriendResultArraySucc)succ fail:(TIMFail)fail;
  155 +
  156 +/**
  157 + * 修改好友
  158 + *
  159 + * @param identifier 好友id
  160 + * @param values 需要更新的属性,可一次更新多个字段. 参见 TIMFriendshipDefine.h 的 TIMFriendTypeKey_XXX
  161 + * @param succ 成功回调
  162 + * @param fail 失败回调
  163 + *
  164 + * @return 0 发送请求成功
  165 + */
  166 +- (int)modifyFriend:(NSString *)identifier values:(NSDictionary<NSString *, id> *)values succ:(TIMSucc)succ fail:(TIMFail)fail;
  167 +
  168 +/**
  169 + * 获取未决列表
  170 + *
  171 + * @param pendencyRequest 请求信息,详细参考TIMFriendPendencyRequest
  172 + * @param succ 成功回调
  173 + * @param fail 失败回调
  174 + *
  175 + * @return 0 发送请求成功
  176 + */
  177 +- (int)getPendencyList:(TIMFriendPendencyRequest *)pendencyRequest succ:(TIMGetFriendPendencyListSucc)succ fail:(TIMFail)fail;
  178 +
  179 +/**
  180 + * 未决删除
  181 + *
  182 + * @param type 未决好友类型
  183 + * @param identifiers 要删除的未决列表
  184 + * @param succ 成功回调
  185 + * @param fail 失败回调
  186 + *
  187 + * @return 0 发送请求成功
  188 + */
  189 +- (int)deletePendency:(TIMPendencyType)type users:(NSArray *)identifiers succ:(TIMSucc)succ fail:(TIMFail)fail;
  190 +
  191 +/**
  192 + * 未决已读上报
  193 + *
  194 + * @param timestamp 已读时间戳,此时间戳以前的消息都将置为已读
  195 + * @param succ 成功回调
  196 + * @param fail 失败回调
  197 + *
  198 + * @return 0 发送请求成功
  199 + */
  200 +- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;
  201 +
  202 +/**
  203 + * 获取黑名单列表
  204 + *
  205 + * @param succ 成功回调,返回NSString*列表
  206 + * @param fail 失败回调
  207 + *
  208 + * @return 0 发送请求成功
  209 + */
  210 +- (int)getBlackList:(TIMFriendArraySucc)succ fail:(TIMFail)fail;
  211 +
  212 +/**
  213 + * 添加用户到黑名单
  214 + *
  215 + * @param identifiers 用户列表
  216 + * @param succ 成功回调
  217 + * @param fail 失败回调
  218 + *
  219 + * @return 0 发送请求成功
  220 + */
  221 +- (int)addBlackList:(NSArray *)identifiers succ:(TIMFriendResultArraySucc)succ fail:(TIMFail)fail;
  222 +
  223 +/**
  224 + * 把用户从黑名单中删除
  225 + *
  226 + * @param identifiers 用户列表
  227 + * @param succ 成功回调
  228 + * @param fail 失败回调
  229 + *
  230 + * @return 0 发送请求成功
  231 + */
  232 +- (int)deleteBlackList:(NSArray *)identifiers succ:(TIMFriendResultArraySucc)succ fail:(TIMFail)fail;
  233 +
  234 +/**
  235 + * 新建好友分组
  236 + *
  237 + * @param groupNames 分组名称列表,必须是当前不存在的分组
  238 + * @param identifiers 要添加到分组中的好友
  239 + * @param succ 成功回调
  240 + * @param fail 失败回调
  241 + *
  242 + * @return 0 发送请求成功
  243 + */
  244 +- (int)createFriendGroup:(NSArray *)groupNames users:(NSArray *)identifiers succ:(TIMFriendResultArraySucc)succ fail:(TIMFail)fail;
  245 +
  246 +/**
  247 + * 获取指定的好友分组信息
  248 + *
  249 + * @param groupNames 要获取信息的好友分组名称列表,传入nil获得所有分组信息
  250 + * @param succ 成功回调,返回 TIMFriendGroup* 列表
  251 + * @param fail 失败回调
  252 + *
  253 + * @return 0 发送请求成功
  254 + */
  255 +- (int)getFriendGroups:(NSArray *)groupNames succ:(TIMFriendGroupArraySucc)succ fail:(TIMFail)fail;
  256 +
  257 +/**
  258 + * 删除好友分组
  259 + *
  260 + * @param groupNames 要删除的好友分组名称列表
  261 + * @param succ 成功回调
  262 + * @param fail 失败回调
  263 + *
  264 + * @return 0 发送请求成功
  265 + */
  266 +- (int)deleteFriendGroup:(NSArray *)groupNames succ:(TIMSucc)succ fail:(TIMFail)fail;
  267 +
  268 +/**
  269 + * 修改好友分组的名称
  270 + *
  271 + * @param oldName 原来的分组名称
  272 + * @param newName 新的分组名称
  273 + * @param succ 成功回调
  274 + * @param fail 失败回调
  275 + *
  276 + * @return 0 发送请求成功
  277 + */
  278 +- (int)renameFriendGroup:(NSString*)oldName newName:(NSString*)newName succ:(TIMSucc)succ fail:(TIMFail)fail;
  279 +
  280 +/**
  281 + * 添加好友到一个好友分组
  282 + *
  283 + * @param groupName 好友分组名称
  284 + * @param identifiers 要添加到分组中的好友
  285 + * @param succ 成功回调
  286 + * @param fail 失败回调
  287 + *
  288 + * @return 0 发送请求成功
  289 + */
  290 +- (int)addFriendsToFriendGroup:(NSString *)groupName users:(NSArray *)identifiers succ:(TIMFriendResultArraySucc)succ fail:(TIMFail)fail;
  291 +
  292 +/**
  293 + * 从好友分组中删除好友
  294 + *
  295 + * @param groupName 好友分组名称
  296 + * @param identifiers 要移出分组的好友
  297 + * @param succ 成功回调
  298 + * @param fail 失败回调
  299 + *
  300 + * @return 0 发送请求成功
  301 + */
  302 +- (int)deleteFriendsFromFriendGroup:(NSString *)groupName users:(NSArray *)identifiers succ:(TIMFriendResultArraySucc)succ fail:(TIMFail)fail;
  303 +@end
  304 +
  305 +#endif /* TIMFriendshipManager_h */
  1 +//
  2 +// TIMGroupManager.h
  3 +// ImSDK
  4 +//
  5 +// Created by bodeng on 17/3/15.
  6 +// Copyright (c) 2015 tencent. All rights reserved.
  7 +//
  8 +
  9 +#ifndef ImSDK_TIMGroupManager_h
  10 +#define ImSDK_TIMGroupManager_h
  11 +
  12 +#import "TIMComm.h"
  13 +
  14 +@interface TIMGroupManager : NSObject
  15 +
  16 +#pragma mark 一,获取群组实例
  17 +/////////////////////////////////////////////////////////////////////////////////
  18 +//
  19 +// (一)获取群组实例
  20 +//
  21 +/////////////////////////////////////////////////////////////////////////////////
  22 +/// @name 获取群组实例
  23 +/// @{
  24 +/**
  25 + * 1.1 获取群管理器实例
  26 + *
  27 + * @return 管理器实例
  28 + */
  29 ++ (TIMGroupManager*)sharedInstance;
  30 +
  31 +///@}
  32 +
  33 +#pragma mark 二,创建/删除/加入/退出群组
  34 +/////////////////////////////////////////////////////////////////////////////////
  35 +//
  36 +// (二)创建/删除/加入/退出群组
  37 +//
  38 +/////////////////////////////////////////////////////////////////////////////////
  39 +/// @name 创建/删除/加入/退出群组
  40 +/// @{
  41 +
  42 +/**
  43 + * 1.1 创建私有群
  44 + *
  45 + * 快速创建私有群,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  46 + *
  47 + * @param members 群成员,NSString* 数组
  48 + * @param groupName 群名
  49 + * @param succ 成功回调 groupId
  50 + * @param fail 失败回调
  51 + *
  52 + * @return 0:成功;1:失败
  53 + */
  54 +- (int)createPrivateGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  55 +
  56 +/**
  57 + * 1.2 创建公开群
  58 + *
  59 + * 快速创建公开群,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  60 + *
  61 + * @param members 群成员,NSString* 数组
  62 + * @param groupName 群名
  63 + * @param succ 成功回调 groupId
  64 + * @param fail 失败回调
  65 + *
  66 + * @return 0:成功;1:失败
  67 + */
  68 +- (int)createPublicGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  69 +
  70 +/**
  71 + * 1.3 创建聊天室
  72 + *
  73 + * 快速创建聊天室,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  74 + *
  75 + * @param members 群成员,NSString* 数组
  76 + * @param groupName 群名
  77 + * @param succ 成功回调 groupId
  78 + * @param fail 失败回调
  79 + *
  80 + * @return 0:成功;1:失败
  81 + */
  82 +- (int)createChatRoomGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  83 +
  84 +/**
  85 + * 1.4 创建音视频聊天室
  86 + *
  87 + * 快速创建音视频聊天室,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](https://cloud.tencent.com/document/product/269/1502#.E7.BE.A4.E7.BB.84.E5.BD.A2.E6.80.81.E4.BB.8B.E7.BB.8D)
  88 + *
  89 + * @param groupName 群名
  90 + * @param succ 成功回调 groupId
  91 + * @param fail 失败回调
  92 + *
  93 + * @return 0:成功;1:失败
  94 + */
  95 +- (int)createAVChatRoomGroup:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  96 +
  97 +/**
  98 + * 1.5 创建指定类型和 ID 的群组
  99 + *
  100 + * 1. 默认创建群组时,IM 通讯云服务器会生成一个唯一的 ID,该 ID 将以 @TGS# 开头,且保证在 App 中唯一,以便后续操作。
  101 + * 2. 如果用户需要自定义群组 ID,在创建时可指定 ID,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
  102 + *
  103 + * @param type 群类型,Private,Public,ChatRoom,AVChatRoom
  104 + * @param groupId 自定义群组 ID,为空时系统自动分配
  105 + * @param groupName 群组名称
  106 + * @param succ 成功回调
  107 + * @param fail 失败回调
  108 + *
  109 + * @return 0:成功;1:失败
  110 + */
  111 +- (int)createGroup:(NSString*)type groupId:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  112 +
  113 +/**
  114 + * 1.6 创建自定义群组
  115 + *
  116 + * 在创建群组时,除了设置默认的成员以及群名外,还可以设置如群公告、群简介等字段。
  117 + *
  118 + * @param groupInfo 群组信息,详情请参考 TIMComm+Group.h 里面的 TIMCreateGroupInfo 定义
  119 + * @param succ 成功回调 groupId
  120 + * @param fail 失败回调
  121 + *
  122 + * @return 0:成功;1:失败
  123 + */
  124 +- (int)createGroup:(TIMCreateGroupInfo*)groupInfo succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
  125 +
  126 +/**
  127 + * 1.7 解散群组
  128 + *
  129 + * 1. 私有群:任何人都无法解散群组
  130 + * 2. 公开群、聊天室、直播大群:群主可以解散群组。
  131 + *
  132 + * @param groupId 群组Id
  133 + * @param succ 成功回调
  134 + * @param fail 失败回调
  135 + *
  136 + * @return 0:成功;1:失败
  137 + */
  138 +- (int)deleteGroup:(NSString*)groupId succ:(TIMSucc)succ fail:(TIMFail)fail;
  139 +
  140 +/**
  141 + * 1.8 申请加群
  142 + *
  143 + * 1. 私有群:不能由用户主动申请入群。
  144 + * 2. 公开群、聊天室:可以主动申请进入。
  145 + * 3. 直播大群:可以任意加入群组。
  146 + * 4. 如果群组设置为需要审核,申请入群后管理员和群主会收到申请入群系统消息 TIMGroupSystemElem,判断 TIMGroupSystemElem 的 Type 类型如果是 TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE ,这时候调用 getPendencyFromServer 获取群未决列表,调用 TIMGroupPendencyItem 对象调用 accept 接口同意入群,申请人会收到同意入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE),调用 refuse 接口拒绝入群,申请人会收到拒绝入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE)。
  147 + * 5. 如果群主设置为任何人可加入,则直接入群成功。
  148 + *
  149 + * @param groupId 申请加入的群组Id
  150 + * @param msg 申请消息
  151 + * @param succ 成功回调(申请成功等待审批)
  152 + * @param fail 失败回调
  153 + *
  154 + * @return 0:成功;1:失败
  155 + */
  156 +- (int)joinGroup:(NSString*)groupId msg:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
  157 +
  158 +/**
  159 + * 1.9 主动退出群组
  160 + *
  161 + * 1. 私有群:全员可退出群组。
  162 + * 2. 公开群、聊天室、直播大群:群主不能退出。
  163 + * 3. 当用户主动退出群组时,该用户会收到退群消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE),只有退群的用户自己可以收到。当用户调用 QuitGroup 时成功回调返回,表示已退出成功,此消息主要为了多终端同步,其他终端可以作为更新群列表的时机,本终端可以选择忽略。
  164 + *
  165 + * @param groupId 群组Id
  166 + * @param succ 成功回调
  167 + * @param fail 失败回调
  168 + *
  169 + * @return 0:成功;1:失败
  170 + */
  171 +- (int)quitGroup:(NSString*)groupId succ:(TIMSucc)succ fail:(TIMFail)fail;
  172 +
  173 +
  174 +///@}
  175 +
  176 +#pragma mark 三,邀请/删除群成员
  177 +/////////////////////////////////////////////////////////////////////////////////
  178 +//
  179 +// (三)邀请/删除群成员
  180 +//
  181 +/////////////////////////////////////////////////////////////////////////////////
  182 +/// @name 邀请/删除群成员
  183 +/// @{
  184 +
  185 +/**
  186 + * 3.1 邀请好友入群
  187 + *
  188 + * 1. 只有私有群可以邀请用户入群
  189 + * 2. 公开群,聊天室不能邀请用户入群,但在创建群时可以直接拉人入群
  190 + * 3. 音视频聊天室不能拉用户入群,也不能在创建群时拉人入群,只能用户主动进群
  191 + *
  192 + * @param groupId 群组Id
  193 + * @param members 要加入的成员列表(NSString* 类型数组)
  194 + * @param succ 成功回调 (TIMGroupMemberResult 列表)
  195 + * @param fail 失败回调
  196 + *
  197 + * @return 0:成功;1:失败
  198 + */
  199 +- (int)inviteGroupMember:(NSString*)groupId members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  200 +
  201 +/**
  202 + * 3.2 删除群成员
  203 + *
  204 + * 1. 私有群:只有创建者可删除群组成员。
  205 + * 2. 公开群、聊天室:只有管理员和群主可以踢人。
  206 + * 3. 对于直播大群:不能踢人。
  207 + *
  208 + * @param groupId 群组Id
  209 + * @param reason 删除原因
  210 + * @param members 要删除的成员列表
  211 + * @param succ 成功回调 (TIMGroupMemberResult 列表)
  212 + * @param fail 失败回调
  213 + *
  214 + * @return 0:成功;1:失败
  215 + */
  216 +- (int)deleteGroupMemberWithReason:(NSString*)groupId reason:(NSString*)reason members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  217 +
  218 +///@}
  219 +
  220 +#pragma mark 四,获取群信息
  221 +/////////////////////////////////////////////////////////////////////////////////
  222 +//
  223 +// (四)获取群信息
  224 +//
  225 +/////////////////////////////////////////////////////////////////////////////////
  226 +/// @name 获取群信息
  227 +/// @{
  228 +
  229 +/**
  230 + * 4.1 获取群列表
  231 + *
  232 + * 获取自己所加入的群列表。
  233 + *
  234 + * @param succ 成功回调,NSArray 列表为 TIMGroupInfo,结构体只包含 group|groupName|groupType|faceUrl|allShutup|selfInfo 信息
  235 + * @param fail 失败回调
  236 + *
  237 + * @return 0:成功;1:失败
  238 + */
  239 +- (int)getGroupList:(TIMGroupListSucc)succ fail:(TIMFail)fail;
  240 +
  241 +/**
  242 + * 4.2 获取服务器存储的群组信息
  243 + *
  244 + * 1. 无论是公开群还是私有群,群成员均可以拉到群组信息。
  245 + * 2. 如果是公开群,非群组成员可以拉到 group|groupName|owner|groupType|createTime|maxMemberNum|memberNum|introduction|faceURL|addOpt|onlineMemberNum|customInfo 这些字段信息。如果是私有群,非群组成员拉取不到群组信息。
  246 + *
  247 + * @param succ 成功回调,NSArray 列表为 TIMGroupInfoResult,不包含 selfInfo 信息
  248 + * @param fail 失败回调
  249 + *
  250 + * @return 0:成功;1:失败
  251 + */
  252 +- (int)getGroupInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
  253 +
  254 +/**
  255 + * 4.3 获取本地存储的群组信息
  256 + *
  257 + * 1. 无论是公开群还是私有群,群成员均可以拉到群组信息。
  258 + * 2. 如果是公开群,非群组成员可以拉到 group|groupName|owner|groupType|createTime|maxMemberNum|memberNum|introduction|faceURL|addOpt|onlineMemberNum|customInfo 这些字段信息。如果是私有群,非群组成员拉取不到群组信息。
  259 + *
  260 + * @param groupId 群组Id
  261 + *
  262 + * @return 群组信息
  263 + */
  264 +- (TIMGroupInfo *)queryGroupInfo:(NSString *)groupId;
  265 +
  266 +/**
  267 + * 4.4 获取群成员列表
  268 + *
  269 + * @param groupId 群组Id
  270 + * @param succ 成功回调 (TIMGroupMemberInfo 列表)
  271 + * @param fail 失败回调
  272 + *
  273 + * @return 0:成功;1:失败
  274 + */
  275 +- (int)getGroupMembers:(NSString*)groupId succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  276 +
  277 +/**
  278 + * 4.5 获取本人在群组内的成员信息
  279 + *
  280 + * @param groupId 群组Id
  281 + * @param succ 成功回调,返回信息
  282 + * @param fail 失败回调
  283 + *
  284 + * @return 0:成功;1:失败
  285 + */
  286 +- (int)getGroupSelfInfo:(NSString*)groupId succ:(TIMGroupSelfSucc)succ fail:(TIMFail)fail;
  287 +
  288 +/**
  289 + * 4.6 获取群组指定成员的信息
  290 + *
  291 + * 获取群组指定成员的信息,需要设置群成员 members,其他限制参考 getGroupMembers
  292 + *
  293 + * @param groupId 群组Id
  294 + * @param members 成员Id(NSString*)列表
  295 + * @param succ 成功回调 (TIMGroupMemberInfo 列表)
  296 + * @param fail 失败回调
  297 + *
  298 + * @return 0:成功;1:失败
  299 + */
  300 +- (int)getGroupMembersInfo:(NSString*)groupId members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
  301 +
  302 +/**
  303 + * 4.7 获取指定类型的成员列表(支持按字段拉取,分页)
  304 + *
  305 + * @param groupId 群组Id
  306 + * @param filter 群成员角色过滤方式
  307 + * @param flags 拉取资料标志
  308 + * @param custom 要获取的自定义key(NSString*)列表
  309 + * @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为0
  310 + * @param succ 成功回调
  311 + * @param fail 失败回调
  312 + * @return 0:成功;1:失败
  313 + */
  314 +- (int)getGroupMembers:(NSString*)groupId ByFilter:(TIMGroupMemberFilter)filter flags:(TIMGetGroupMemInfoFlag)flags custom:(NSArray<NSString *>*)custom nextSeq:(uint64_t)nextSeq succ:(TIMGroupMemberSuccV2)succ fail:(TIMFail)fail;
  315 +
  316 +/**
  317 + * 4.8 获取接受消息选项
  318 + *
  319 + * @param groupId 群组Id
  320 + * @param succ 成功回调, TIMGroupReceiveMessageOpt 0:接收消息;1:不接收消息,服务器不进行转发;2:接受消息,不进行 iOS APNs 推送
  321 + * @param fail 失败回调
  322 + *
  323 + * @return 0:成功;1:失败
  324 + */
  325 +- (int)getReciveMessageOpt:(NSString*)groupId succ:(TIMGroupReciveMessageOptSucc)succ fail:(TIMFail)fail;
  326 +
  327 +///@}
  328 +
  329 +#pragma mark 五,修改群信息
  330 +/////////////////////////////////////////////////////////////////////////////////
  331 +//
  332 +// (五)修改群信息
  333 +//
  334 +/////////////////////////////////////////////////////////////////////////////////
  335 +/// @name 修改群信息
  336 +/// @{
  337 +
  338 +/**
  339 + * 5.1 修改群名
  340 + *
  341 + * 1. 公开群、聊天室和直播大群:只有群主或者管理员可以修改群名。
  342 + * 2. 私有群:任何人可修改群名。
  343 + *
  344 + * @param groupId 群组Id
  345 + * @param groupName 新群名
  346 + * @param succ 成功回调
  347 + * @param fail 失败回调
  348 + *
  349 + * @return 0:成功;1:失败
  350 + */
  351 +- (int)modifyGroupName:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMSucc)succ fail:(TIMFail)fail;
  352 +
  353 +/**
  354 + * 5.2 修改群简介
  355 + *
  356 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群简介。
  357 + * 2. 私有群:任何人可修改群简介。
  358 + *
  359 + * @param groupId 群组Id
  360 + * @param introduction 群简介(最长120字节)
  361 + * @param succ 成功回调
  362 + * @param fail 失败回调
  363 + *
  364 + * @return 0:成功;1:失败
  365 + */
  366 +- (int)modifyGroupIntroduction:(NSString*)groupId introduction:(NSString*)introduction succ:(TIMSucc)succ fail:(TIMFail)fail;
  367 +
  368 +/**
  369 + * 5.3 修改群公告
  370 + *
  371 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群公告。
  372 + * 2. 私有群:任何人可修改群公告。
  373 + *
  374 + * @param groupId 群组Id
  375 + * @param notification 群公告(最长150字节)
  376 + * @param succ 成功回调
  377 + * @param fail 失败回调
  378 + *
  379 + * @return 0:成功;1:失败
  380 + */
  381 +- (int)modifyGroupNotification:(NSString*)groupId notification:(NSString*)notification succ:(TIMSucc)succ fail:(TIMFail)fail;
  382 +
  383 +/**
  384 + * 5.4 修改群头像
  385 + *
  386 + * 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群头像。
  387 + * 2. 私有群:任何人可修改群头像。
  388 + *
  389 + * @param groupId 群组Id
  390 + * @param url 群头像地址(最长100字节)
  391 + * @param succ 成功回调
  392 + * @param fail 失败回调
  393 + *
  394 + * @return 0:成功;1:失败
  395 + */
  396 +- (int)modifyGroupFaceUrl:(NSString*)groupId url:(NSString*)url succ:(TIMSucc)succ fail:(TIMFail)fail;
  397 +
  398 +/**
  399 + * 5.5 修改加群选项
  400 + *
  401 + * 1. 公开群、聊天室:只有群主或者管理员可以修改加群选项。
  402 + * 2. 音视频聊天室:不能设置加群选项,成员默认可以随意进入。
  403 + * 2. 私有群:只能通过邀请加入群组,不能主动申请加入某个群组。
  404 + *
  405 + * @param groupId 群组Id
  406 + * @param opt 加群选项,详见 TIMGroupAddOpt
  407 + * @param succ 成功回调
  408 + * @param fail 失败回调
  409 + *
  410 + * @return 0:成功;1:失败
  411 + */
  412 +- (int)modifyGroupAddOpt:(NSString*)groupId opt:(TIMGroupAddOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
  413 +
  414 +/**
  415 + * 5.6 修改群组是否可被搜索属性
  416 + *
  417 + * @param groupId 群组Id
  418 + * @param searchable 是否能被搜索
  419 + * @param succ 成功回调
  420 + * @param fail 失败回调
  421 + *
  422 + * @return 0:成功;1:失败
  423 + */
  424 +- (int)modifyGroupSearchable:(NSString*)groupId searchable:(BOOL)searchable succ:(TIMSucc)succ fail:(TIMFail)fail;
  425 +
  426 +/**
  427 + * 5.8 修改群组全员禁言属性
  428 + *
  429 + * 1. 群主、管理员:有权限进行全员禁言的操作。
  430 + * 2. 所有群组类型:都支持全员禁言的操作。
  431 + *
  432 + * @param groupId 群组Id
  433 + * @param shutup 是否禁言
  434 + * @param succ 成功回调
  435 + * @param fail 失败回调
  436 + *
  437 + * @return 0:成功;1:失败
  438 + */
  439 +- (int)modifyGroupAllShutup:(NSString*)groupId shutup:(BOOL)shutup succ:(TIMSucc)succ fail:(TIMFail)fail;
  440 +
  441 +/**
  442 + * 5.9 修改群自定义字段集合
  443 + *
  444 + * 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限。
  445 + *
  446 + *
  447 + * @param groupId 群组Id
  448 + * @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型,value 长度不超过 512 字节
  449 + * @param succ 成功回调
  450 + * @param fail 失败回调
  451 + *
  452 + * @return 0:成功;1:失败
  453 + */
  454 +- (int)modifyGroupCustomInfo:(NSString*)groupId customInfo:(NSDictionary<NSString *,NSData *>*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
  455 +
  456 +/**
  457 + * 5.10 转让群给新群主
  458 + *
  459 + * 1. 只有群主才有权限进行群转让操作。
  460 + * 2. 直播大群不能进行群转让操作。
  461 + *
  462 + * @param groupId 群组Id
  463 + * @param identifier 新的群主Id
  464 + * @param succ 成功回调
  465 + * @param fail 失败回调
  466 + *
  467 + * @return 0:成功;1:失败
  468 + */
  469 +- (int)modifyGroupOwner:(NSString*)groupId user:(NSString*)identifier succ:(TIMSucc)succ fail:(TIMFail)fail;
  470 +
  471 +///@}
  472 +
  473 +#pragma mark 六,修改群成员信息
  474 +/////////////////////////////////////////////////////////////////////////////////
  475 +//
  476 +// (六)修改群成员信息
  477 +//
  478 +/////////////////////////////////////////////////////////////////////////////////
  479 +/// @name 修改群成员信息
  480 +/// @{
  481 +
  482 +/**
  483 + * 6.1 修改群成员名片
  484 + *
  485 + * 只有本人、管理员或群主能够调用
  486 + *
  487 + * @param groupId 群组Id
  488 + * @param identifier 被操作用户identifier
  489 + * @param nameCard 群名片
  490 + * @param succ 成功回调
  491 + * @param fail 失败回调
  492 + *
  493 + * @return 0:成功;1:失败
  494 + */
  495 +- (int)modifyGroupMemberInfoSetNameCard:(NSString*)groupId user:(NSString*)identifier nameCard:(NSString*)nameCard succ:(TIMSucc)succ fail:(TIMFail)fail;
  496 +
  497 +/**
  498 + * 6.2 修改群成员角色
  499 + *
  500 + * 1. 群主、管理员:可以进行对群成员的身份进行修改。
  501 + * 2. 直播大群:不支持修改用户群内身份。
  502 + *
  503 + * @param groupId 群组Id
  504 + * @param identifier 被修改角色的用户identifier
  505 + * @param role 角色(注意:不能修改为群主),详见 TIMGroupMemberRole
  506 + * @param succ 成功回调
  507 + * @param fail 失败回调
  508 + *
  509 + * @return 0:成功;1:失败
  510 + */
  511 +- (int)modifyGroupMemberInfoSetRole:(NSString*)groupId user:(NSString*)identifier role:(TIMGroupMemberRole)role succ:(TIMSucc)succ fail:(TIMFail)fail;
  512 +
  513 +/**
  514 + * 6.3 修改群组成员是否可见属性
  515 + *
  516 + * @param groupId 群组Id
  517 + * @param visible 是否可见
  518 + * @param succ 成功回调
  519 + * @param fail 失败回调
  520 + *
  521 + * @return 0:成功;1:失败
  522 + */
  523 +- (int)modifyGroupMemberVisible:(NSString*)groupId visible:(BOOL)visible succ:(TIMSucc)succ fail:(TIMFail)fail;
  524 +
  525 +/**
  526 + * 6.4 禁言用户
  527 + *
  528 + * 只有管理员或群主能够调用
  529 + *
  530 + * @param groupId 群组Id
  531 + * @param identifier 被禁言的用户identifier
  532 + * @param stime 禁言时间
  533 + * @param succ 成功回调
  534 + * @param fail 失败回调
  535 + *
  536 + * @return 0:成功;1:失败
  537 + */
  538 +- (int)modifyGroupMemberInfoSetSilence:(NSString*)groupId user:(NSString*)identifier stime:(uint32_t)stime succ:(TIMSucc)succ fail:(TIMFail)fail;
  539 +
  540 +/**
  541 + * 5.7 修改个人接受消息选项
  542 + *
  543 + * 默认情况下,公开群和私有群是接收并离线推送群消息,聊天室和直播大群是接收但不离线推送群消息。
  544 + *
  545 + * @param groupId 群组Id
  546 + * @param opt 接受消息选项,详见 TIMGroupReceiveMessageOpt
  547 + * @param succ 成功回调
  548 + * @param fail 失败回调
  549 + *
  550 + * @return 0:成功;1:失败
  551 + */
  552 +- (int)modifyReceiveMessageOpt:(NSString*)groupId opt:(TIMGroupReceiveMessageOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
  553 +
  554 +/**
  555 + * 6.5 修改群成员自定义字段集合
  556 + *
  557 + * 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段 配置相关的 key 和权限。
  558 + *
  559 + * @param groupId 群组 Id
  560 + * @param identifier 被操作用户 identifier
  561 + * @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型,value 长度不超过 64 字节
  562 + * @param succ 成功回调
  563 + * @param fail 失败回调
  564 + *
  565 + * @return 0:成功;1:失败
  566 + */
  567 +- (int)modifyGroupMemberInfoSetCustomInfo:(NSString*)groupId user:(NSString*)identifier customInfo:(NSDictionary<NSString*,NSData*> *)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
  568 +
  569 +///@}
  570 +
  571 +#pragma mark 七,群未决逻辑
  572 +/////////////////////////////////////////////////////////////////////////////////
  573 +//
  574 +// (七)群未处理请求逻辑
  575 +//
  576 +/////////////////////////////////////////////////////////////////////////////////
  577 +/// @name 群未处理请求逻辑
  578 +/// @{
  579 +
  580 +/**
  581 + * 7.1 获取群组未处理请求列表
  582 + *
  583 + * 1. 群未处理请求泛指所有需要审批的群相关的操作(例如:加群待审批,拉人入群待审批等等)。即便审核通过或者拒绝后,该条信息也可通过此接口拉回,拉回的信息中有已处理标志
  584 + * 2. 审批人:有权限拉取相关信息,如果 UserA 申请加入群 GroupA,则群管理员可获取此未处理相关信息,UserA 因为没有审批权限,不需要拉取未处理信息。如果 AdminA 拉 UserA 进去 GroupA,则 UserA 可以拉取此未处理相关信息,因为该未处理信息待 UserA 审批。
  585 + *
  586 + * @param option 拉取群未处理请求参数配置,详情请参考 TIMComm.h -> TIMGroupPendencyOption
  587 + * @param succ 成功回调,返回未决列表
  588 + * @param fail 失败回调
  589 + *
  590 + * @return 0:成功;1:失败
  591 + */
  592 +- (int)getPendencyFromServer:(TIMGroupPendencyOption*)option succ:(TIMGetGroupPendencyListSucc)succ fail:(TIMFail)fail;
  593 +
  594 +/**
  595 + * 7.2 群未处理列表已读上报
  596 + *
  597 + * 对于未处理信息,SDK 可对其和之前的所有未处理请求上报已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。
  598 + *
  599 + * @param timestamp 上报已读时间戳
  600 + * @param succ 成功回调
  601 + * @param fail 失败回调
  602 + *
  603 + * @return 0:成功;1:失败
  604 + */
  605 +- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;
  606 +
  607 +///@}
  608 +
  609 +@end
  610 +#endif
  1 +/////////////////////////////////////////////////////////////////////
  2 +//
  3 +// 腾讯云通信服务 IMSDK
  4 +//
  5 +// 模块名称:TIMManager + MsgExt
  6 +//
  7 +// 模块功能:此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
  8 +//
  9 +/////////////////////////////////////////////////////////////////////
  10 +
  11 +#ifndef TIMManager_MsgExt_h
  12 +#define TIMManager_MsgExt_h
  13 +
  14 +#import "TIMManager.h"
  15 +
  16 +/**
  17 + * IMSDK 扩展类,此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
  18 + */
  19 +@interface TIMManager (MsgExt)
  20 +
  21 +/**
  22 + * 获取群管理器
  23 + *
  24 + * 此函数待废弃,请直接使用 TIMGroupManager 的 sharedInstance 函数
  25 + *
  26 + * @return 群管理器,详情请参考 TIMGroupManager.h 中的 TIMGroupManager 定义
  27 + */
  28 +- (TIMGroupManager*)groupManager;
  29 +
  30 +
  31 +/**
  32 + * 获取好友管理器
  33 + *
  34 + * 此函数待废弃,请直接使用 TIMFriendshipManager 的 sharedInstance 函数
  35 + *
  36 + * @return 好友管理器,详情请参考 TIMFriendshipManager.h 中的 TIMFriendshipManager 定义
  37 + */
  38 +- (TIMFriendshipManager*)friendshipManager;
  39 +
  40 +/**
  41 + * 获取会话数量
  42 + *
  43 + * @return 会话数量
  44 + */
  45 +- (int)conversationCount;
  46 +
  47 +/**
  48 + * 发送消息给多个用户
  49 + *
  50 + * @param msg 发送的消息
  51 + * @param users 目标用户的id列表
  52 + * @param succ 成功回调
  53 + * @param fail 失败回调
  54 + *
  55 + * @return 0 发送成功
  56 + */
  57 +- (int)sendMessage:(TIMMessage*)msg toUsers:(NSArray*)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail;
  58 +
  59 +/**
  60 + * 自定义版本号
  61 + *
  62 + * @param version 版本号
  63 + * @note setCustomVersion() 要在 initSdk() 之前调用。
  64 + */
  65 +- (void)setCustomVersion:(NSString *)version;
  66 +
  67 +/**
  68 + * 删除未读消息的时候减少会话的未读数
  69 + *
  70 + * 不建议客户使用,删除消息和减少未读数是本地操作,没有和服务器做同步,在程序卸载或则多端同步中会出现未读数不一致的问题。
  71 + *
  72 + * @note reduceUnreadNumberWhenRemoveMessage 要在 initSdk() 之前调用。
  73 + */
  74 +- (void)reduceUnreadNumberWhenRemoveMessage;
  75 +
  76 +@end
  77 +
  78 +
  79 +#endif /* TIMManager_MsgExt_h */