shmily

sdk upgrade

Too many changes to show.

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

No preview for this file type
Pod::Spec.new do |s|
s.name = "HHVDoctorSDK"
s.version = "2.0.6.0712.1151"
<<<<<<< HEAD
s.version = "2.5.6.0312.1627"
=======
s.version = "2.5.6.0312.1627"
>>>>>>> 82728596c8f4a99ff9be7d076879ec2cc6333f33
s.summary = "和缓视频医生 SDK"
s.description = <<-DESC
... ... @@ -16,6 +20,8 @@ Pod::Spec.new do |s|
s.source = { :git => "http://code.hh-medic.com/hh_public/hhvDoctorSDK.ios.git", :tag => s.version }
s.default_subspec = 'Base'
s.dependency 'TXIMSDK_iOS'
s.subspec 'Base' do |base|
base.vendored_frameworks = 'HHVDoctorSDK/*.framework'
... ...
No preview for this file type
//
// IMGroupExt.h
// IMGroupExt
//
// Created by tomzhu on 2017/1/23.
//
//
#ifndef IMGroupExt_h
#define IMGroupExt_h
#import "TIMComm+Group.h"
#import "TIMGroupManager+Ext.h"
#endif /* IMGroupExt_h */
//
// IMMessageExt.h
// IMMessageExt
//
// Created by tomzhu on 2016/12/27.
//
//
#ifndef ImSDK_h
#define ImSDK_h
#import "TIMConversation+MsgExt.h"
#import "TIMMessage+MsgExt.h"
#import "TIMComm+MsgExt.h"
#import "TIMManager+MsgExt.h"
#endif /* ImSDK_h */
//
// IMSdkComm.h
// ImSDK
//
// Created by bodeng on 10/12/14.
// Copyright (c) 2014 tencent. All rights reserved.
//
#ifndef ImSDK_IMSdkComm_h
#define ImSDK_IMSdkComm_h
@interface OMErrResp : NSObject
{
NSString* cmd; // 返回的命令字
int seq; // 请求包的seq
NSString* uin; // uin
int errCode; // 错误码
NSString* errTips; // error tips
}
@property(nonatomic,strong) NSString* cmd;
@property(nonatomic,strong) NSString* uin;
@property(nonatomic,assign) int seq;
@property(nonatomic,assign) int errCode;
@property(nonatomic,strong) NSString* errTips;
@end
/// 业务相关回调
/**
* userid和tinyid 转换回包
* userList 存储IMUserId结构
*/
@interface OMUserIdResp : NSObject{
NSArray* userList; // 用户的登录的open id
}
@property(nonatomic,strong) NSArray* userList;
@end
/**
* userid转换tinyid回调
*
* @param resp 回包结构
*
* @return 0 处理成功
*/
typedef int (^OMUserIdSucc)(OMUserIdResp *resp);
//请求回调
typedef int (^OMErr)(OMErrResp *resp);
/**
* 音视频回调
*/
@interface OMCommandResp : NSObject{
NSData* rspbody;
}
@property(nonatomic,strong) NSData* rspbody;
@end
// relay 回调
typedef int (^OMCommandSucc)(OMCommandResp *resp);
// request 回调
typedef void (^OMRequestSucc)(NSData * data);
typedef void (^OMRequsetFail)(int code, NSString* msg);
/**
* UserId 结构,表示一个用户的账号信息
*/
@interface IMUserId : NSObject{
NSString* uidtype; // uid 类型
unsigned int userappid;
NSString* userid; // 用户id
unsigned long long tinyid;
unsigned long long uin;
}
@property(nonatomic,strong) NSString* uidtype;
@property(nonatomic,assign) unsigned int userappid;
@property(nonatomic,strong) NSString* userid;
@property(nonatomic,assign) unsigned long long tinyid;
@property(nonatomic,assign) unsigned long long uin;
@end
/**
* 一般多人音视频操作成功回调
*/
typedef void (^OMMultiSucc)();
/**
* 一般多人音视频操作失败回调
*
* @param code 错误码
* @param err 错误描述
*/
typedef void (^OMMultiFail)(int code, NSString * err);
#endif
... ... @@ -16,9 +16,7 @@
#import "TIMGroupManager.h"
#import "TIMCallback.h"
#import "TIMFriendshipManager.h"
#import "IMSdkComm.h"
#import "TIMErrorCode.h"
#import "IMGroupExt.h"
#import "IMMessageExt.h"
#import "TIMConversation+MsgExt.h"
#import "TIMManager+MsgExt.h"
#endif
... ...
... ... @@ -37,7 +37,7 @@
- (void)onConnFailed:(int)code err:(NSString*)err;
/**
* 网络连接断开(断线只是通知用户,不需要重新登,重连以后会自动上线)
* 网络连接断开(断线只是通知用户,不需要重新登,重连以后会自动上线)
*
* @param code 错误码
* @param err 错误描述
... ... @@ -85,11 +85,11 @@
- (void)onRefresh;
/**
* 刷新部分会话(包括多终端已读上报同步)
* 刷新部分会话
*
* @param conversations 会话(TIMConversation*)列表
*/
- (void)onRefreshConversations:(NSArray*)conversations;
- (void)onRefreshConversations:(NSArray<TIMConversation *>*)conversations;
@end
/**
... ... @@ -141,7 +141,7 @@
@end
/**
* 图片上传进度回调
* 上传进度回调
*/
@protocol TIMUploadProgressListener <NSObject>
@optional
... ...
//
// TIMComm+Group.h
// IMGroupExt
//
// Created by tomzhu on 2017/2/9.
//
//
#ifndef TIMComm_Group_h
#define TIMComm_Group_h
#import "TIMComm.h"
@class TIMGroupPendencyMeta;
#pragma mark - 枚举类型
/**
* 群基本获取资料标志
*/
typedef NS_ENUM(NSInteger, TIMGetGroupBaseInfoFlag) {
/**
* 不获取群组资料
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NONE = 0x00,
/**
* 获取群组名
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NAME = 0x01,
/**
* 获取创建时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_CREATE_TIME = 0x01 << 1,
/**
* 获取群主id
*/
TIM_GET_GROUP_BASE_INFO_FLAG_OWNER_UIN = 0x01 << 2,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_SEQ = 0x01 << 3,
/**
* 获取最近一次修改群信息时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_TIME = 0x01 << 4,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NEXT_MSG_SEQ = 0x01 << 5,
/**
* 获取最近一次发消息时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG_TIME = 0x01 << 6,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_APP_ID = 0x01 << 7,
/**
* 获取群成员数量
*/
TIM_GET_GROUP_BASE_INFO_FLAG_MEMBER_NUM = 0x01 << 8,
/**
* 获取最大群成员数量
*/
TIM_GET_GROUP_BASE_INFO_FLAG_MAX_MEMBER_NUM = 0x01 << 9,
/**
* 获取群公告
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NOTIFICATION = 0x01 << 10,
/**
* 获取群简介
*/
TIM_GET_GROUP_BASE_INFO_FLAG_INTRODUCTION = 0x01 << 11,
/**
* 获取群头像
*/
TIM_GET_GROUP_BASE_INFO_FLAG_FACE_URL = 0x01 << 12,
/**
* 获取入群类型
*/
TIM_GET_GROUP_BASE_INFO_FLAG_ADD_OPTION = 0x01 << 13,
/**
* 获取群组类型
*/
TIM_GET_GROUP_BASE_INFO_FLAG_GROUP_TYPE = 0x01 << 14,
/**
* 获取最后一条群消息
*/
TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG = 0x01 << 15,
/**
* 获取在线人数
*/
TIM_GET_GROUP_BASE_INFO_FLAG_ONLINE_NUM = 0x01 << 16,
/**
* 获取群成员是否可见标志
*/
TIM_GET_GROUP_BASE_INFO_VISIBLE = 0x01 << 17,
/**
* 获取群是否能被搜到标志
*/
TIM_GET_GROUP_BASE_INFO_SEARCHABLE = 0x01 << 18,
/**
* 获取群全员禁言时间
*/
TIM_GET_GROUP_BASE_INFO_ALL_SHUTUP = 0x01 << 19
};
/**
* 群成员角色过滤方式
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberFilter) {
/**
* 全部成员
*/
TIM_GROUP_MEMBER_FILTER_ALL = 0x00,
/**
* 群主
*/
TIM_GROUP_MEMBER_FILTER_SUPER = 0x01,
/**
* 管理员
*/
TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02,
/**
* 普通成员
*/
TIM_GROUP_MEMBER_FILTER_COMMON = 0x04,
};
/**
* 群成员获取资料标志
*/
typedef NS_ENUM(NSInteger, TIMGetGroupMemInfoFlag) {
/**
* 入群时间
*/
TIM_GET_GROUP_MEM_INFO_FLAG_JOIN_TIME = 0x01,
/**
* 消息标志
*/
TIM_GET_GROUP_MEM_INFO_FLAG_MSG_FLAG = 0x01 << 1,
/**
* 角色
*/
TIM_GET_GROUP_MEM_INFO_FLAG_ROLE_INFO = 0x01 << 3,
/**
* 禁言时间
*/
TIM_GET_GROUP_MEM_INFO_FLAG_SHUTUP_TIME = 0x01 << 4,
/**
* 群名片
*/
TIM_GET_GROUP_MEM_INFO_FLAG_NAME_CARD = 0x01 << 5,
};
/**
* 群组操作结果
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberStatus) {
/**
* 操作失败
*/
TIM_GROUP_MEMBER_STATUS_FAIL = 0,
/**
* 操作成功
*/
TIM_GROUP_MEMBER_STATUS_SUCC = 1,
/**
* 无效操作,加群时已经是群成员,移除群组时不在群内
*/
TIM_GROUP_MEMBER_STATUS_INVALID = 2,
/**
* 等待处理,邀请入群时等待对方处理
*/
TIM_GROUP_MEMBER_STATUS_PENDING = 3,
};
typedef NS_ENUM(NSInteger, TIMGroupPendencyGetType) {
/**
* 申请入群
*/
TIM_GROUP_PENDENCY_GET_TYPE_JOIN = 0x0,
/**
* 邀请入群
*/
TIM_GROUP_PENDENCY_GET_TYPE_INVITE = 0x1,
};
typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleStatus) {
/**
* 未处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_UNHANDLED = 0,
/**
* 被他人处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_OTHER_HANDLED = 1,
/**
* 被用户处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_OPERATOR_HANDLED = 2,
};
typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleResult) {
/**
* 拒绝申请
*/
TIM_GROUP_PENDENCY_HANDLE_RESULT_REFUSE = 0,
/**
* 同意申请
*/
TIM_GROUP_PENDENCY_HANDLE_RESULT_AGREE = 1,
};
#pragma mark - block回调
/**
* 群成员列表回调
*
* @param members 群成员列表,成员类型 TIMGroupMemberInfo
*/
typedef void (^TIMGroupMemberSucc)(NSArray * members);
/**
* 群列表回调
*
* @param arr 群列表,成员类型 TIMGroupInfo
*/
typedef void (^TIMGroupListSucc)(NSArray * arr);
/**
* 本人群组内成员信息回调
*
* @param selfInfo 本人成员信息
*/
typedef void (^TIMGroupSelfSucc)(TIMGroupMemberInfo * selfInfo);
/**
* 群接受消息选项回调
*
* @param opt 群接受消息选项
*/
typedef void (^TIMGroupReciveMessageOptSucc)(TIMGroupReceiveMessageOpt opt);
/**
* 群成员列表回调(分页使用)
*
* @param members 群成员(TIMGroupMemberInfo*)列表
*/
typedef void (^TIMGroupMemberSuccV2)(uint64_t nextSeq, NSArray * members);
/**
* 群搜索回调
*
* @param totalNum 搜索结果的总数
* @param groups 请求的群列表片段
*/
typedef void (^TIMGroupSearchSucc)(uint64_t totalNum, NSArray * groups);
/**
* 获取群组未决请求列表成功
*
* @param meta 未决请求元信息
* @param pendencies 未决请求列表(TIMGroupPendencyItem)数组
*/
typedef void (^TIMGetGroupPendencyListSucc)(TIMGroupPendencyMeta * meta, NSArray * pendencies);
#pragma mark - 基本类型
/**
* 创建群参数
*/
@interface TIMCreateGroupInfo : TIMCodingModel
/**
* 群组Id,nil则使用系统默认Id
*/
@property(nonatomic,strong) NSString* group;
/**
* 群名
*/
@property(nonatomic,strong) NSString* groupName;
/**
* 群类型:Private,Public,ChatRoom,AVChatRoom,BChatRoom
*/
@property(nonatomic,strong) NSString* groupType;
/**
* 是否设置入群选项,Private类型群组请设置为false
*/
@property(nonatomic,assign) BOOL setAddOpt;
/**
* 入群选项
*/
@property(nonatomic,assign) TIMGroupAddOpt addOpt;
/**
* 最大成员数,填0则系统使用默认值
*/
@property(nonatomic,assign) uint32_t maxMemberNum;
/**
* 群公告
*/
@property(nonatomic,strong) NSString* notification;
/**
* 群简介
*/
@property(nonatomic,strong) NSString* introduction;
/**
* 群头像
*/
@property(nonatomic,strong) NSString* faceURL;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
/**
* 创建成员(TIMCreateGroupMemberInfo*)列表
*/
@property(nonatomic,strong) NSArray* membersInfo;
@end
/**
* 未决请求选项
*/
@interface TIMGroupPendencyOption : TIMCodingModel
/**
* 拉取的起始时间 0:拉取最新的
*/
@property(nonatomic,assign) uint64_t timestamp;
/**
* 每页的数量
*/
@property(nonatomic,assign) uint32_t numPerPage;
@end
/**
* 未决请求元信息
*/
@interface TIMGroupPendencyMeta : TIMCodingModel
/**
* 下一次拉取的起始时间戳
*/
@property(nonatomic,assign) uint64_t nextStartTime;
/**
* 已读时间戳大小
*/
@property(nonatomic,assign) uint64_t readTimeSeq;
/**
* 未决未读数
*/
@property(nonatomic,assign) uint32_t unReadCnt;
@end
/**
* 创建群组时的成员信息
*/
@interface TIMCreateGroupMemberInfo : TIMCodingModel
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 成员类型
*/
@property(nonatomic,assign) TIMGroupMemberRole role;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
/**
* 成员操作返回值
*/
@interface TIMGroupMemberResult : NSObject
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 返回状态
*/
@property(nonatomic,assign) TIMGroupMemberStatus status;
@end
/**
* 未决申请
*/
@interface TIMGroupPendencyItem : TIMCodingModel
/**
* 相关群组id
*/
@property(nonatomic,strong) NSString* groupId;
/**
* 请求者id,请求加群:请求者,邀请加群:邀请人
*/
@property(nonatomic,strong) NSString* fromUser;
/**
* 判决者id,请求加群:0,邀请加群:被邀请人
*/
@property(nonatomic,strong) NSString* toUser;
/**
* 未决添加时间
*/
@property(nonatomic,assign) uint64_t addTime;
/**
* 未决请求类型
*/
@property(nonatomic,assign) TIMGroupPendencyGetType getType;
/**
* 已决标志
*/
@property(nonatomic,assign) TIMGroupPendencyHandleStatus handleStatus;
/**
* 已决结果
*/
@property(nonatomic,assign) TIMGroupPendencyHandleResult handleResult;
/**
* 申请或邀请附加信息
*/
@property(nonatomic,strong) NSString* requestMsg;
/**
* 审批信息:同意或拒绝信息
*/
@property(nonatomic,strong) NSString* handledMsg;
/**
* 同意申请
*
* @param msg 同意理由,选填
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
-(void) accept:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 拒绝申请
*
* @param msg 拒绝理由,选填
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
-(void) refuse:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 用户自己的id
*/
@property(nonatomic,strong) NSString* selfIdentifier;
@end
#endif /* TIMComm_Group_h */
//
// TIMComm+MsgExt.h
// IMMessageExt
//
// Created by tomzhu on 2017/1/11.
//
//
#ifndef TIMComm_MsgExt_h
#define TIMComm_MsgExt_h
#import <Foundation/Foundation.h>
#import "TIMComm.h"
@class TIMSendToUsersDetailInfo;
#pragma mark - 枚举类型
typedef NS_ENUM(NSInteger, TIM_SNS_SYSTEM_TYPE){
/**
* 增加好友消息
*/
TIM_SNS_SYSTEM_ADD_FRIEND = 0x01,
/**
* 删除好友消息
*/
TIM_SNS_SYSTEM_DEL_FRIEND = 0x02,
/**
* 增加好友申请
*/
TIM_SNS_SYSTEM_ADD_FRIEND_REQ = 0x03,
/**
* 删除未决申请
*/
TIM_SNS_SYSTEM_DEL_FRIEND_REQ = 0x04,
/**
* 黑名单添加
*/
TIM_SNS_SYSTEM_ADD_BLACKLIST = 0x05,
/**
* 黑名单删除
*/
TIM_SNS_SYSTEM_DEL_BLACKLIST = 0x06,
/**
* 未决已读上报
*/
TIM_SNS_SYSTEM_PENDENCY_REPORT = 0x07,
/**
* 关系链资料变更
*/
TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE = 0x08,
/**
* 推荐数据增加
*/
TIM_SNS_SYSTEM_ADD_RECOMMEND = 0x09,
/**
* 推荐数据删除
*/
TIM_SNS_SYSTEM_DEL_RECOMMEND = 0x0a,
/**
* 已决增加
*/
TIM_SNS_SYSTEM_ADD_DECIDE = 0x0b,
/**
* 已决删除
*/
TIM_SNS_SYSTEM_DEL_DECIDE = 0x0c,
/**
* 推荐已读上报
*/
TIM_SNS_SYSTEM_RECOMMEND_REPORT = 0x0d,
/**
* 已决已读上报
*/
TIM_SNS_SYSTEM_DECIDE_REPORT = 0x0e,
};
/**
* 资料变更
*/
typedef NS_ENUM(NSInteger, TIM_PROFILE_SYSTEM_TYPE){
/**
好友资料变更
*/
TIM_PROFILE_SYSTEM_FRIEND_PROFILE_CHANGE = 0x01,
};
#pragma mark - block回调
typedef void (^TIMSendToUsersFail)(int code, NSString *err, TIMSendToUsersDetailInfo *detailInfo);
#pragma mark - 基本类型
/**
* 发送消息给多用户的失败回调信息
*/
@interface TIMSendToUsersDetailInfo : NSObject
/**
* 发送消息成功的目标用户数
*/
@property(nonatomic,assign) uint32_t succCnt;
/**
* 发送消息失败的目标用户数
*/
@property(nonatomic,assign) uint32_t failCnt;
/**
* 失败信息(TIMSendToUsersErrInfo*)列表
*/
@property(nonatomic,strong) NSArray *errInofs;
@end
/**
* 发送消息给多用户的失败信息
*/
@interface TIMSendToUsersErrInfo : NSObject
/**
* 发送消息失败的目标用户id
*/
@property(nonatomic,strong) NSString *identifier;
/**
* 错误码
*/
@property(nonatomic,assign) int code;
/**
* 错误描述
*/
@property(nonatomic,strong) NSString *err;
@end
/**
* 关系链变更详细信息
*/
@interface TIMSNSChangeInfo : NSObject
/**
* 用户 identifier
*/
@property(nonatomic,strong) NSString * identifier;
/**
* 用户昵称
*/
@property(nonatomic,strong) NSString * nickname;
/**
* 申请添加时有效,添加理由
*/
@property(nonatomic,strong) NSString * wording;
/**
* 申请时填写,添加来源
*/
@property(nonatomic,strong) NSString * source;
/**
* 备注 type=TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE 有效
*/
@property(nonatomic,strong) NSString * remark;
@end
#endif /* TIMComm_MsgExt_h */
... ... @@ -33,6 +33,14 @@
@class TIMGroupMemberInfoOption;
@class TIMFriendProfileOption;
@class TIMFriendResult;
@class TIMCheckFriendResult;
@class TIMGroupPendencyMeta;
@class TIMCreateGroupMemberInfo;
@class TIMSendToUsersDetailInfo;
@class TIMGroupInfo;
@class TIMGroupInfoResult;
@class TIMGroupMemberInfo;
@class TIMGroupPendencyItem;
#pragma mark - 枚举类型
... ... @@ -87,12 +95,12 @@ typedef NS_ENUM(NSInteger, TIMConversationType) {
* C2C 类型
*/
TIM_C2C = 1,
/**
* 群聊 类型
*/
TIM_GROUP = 2,
/**
* 系统消息
*/
... ... @@ -218,22 +226,50 @@ typedef NS_ENUM(NSInteger, TIM_IMAGE_FORMAT){
*/
typedef NS_ENUM(NSInteger, TIMLoginStatus) {
/**
* 已登
* 已登
*/
TIM_STATUS_LOGINED = 1,
/**
* 登
* 登
*/
TIM_STATUS_LOGINING = 2,
/**
* 无登
* 无登
*/
TIM_STATUS_LOGOUT = 3,
};
/**
* 推送规则
*/
typedef NS_ENUM(NSInteger, TIMOfflinePushFlag) {
/**
* 按照默认规则进行推送
*/
TIM_OFFLINE_PUSH_DEFAULT = 0,
/**
* 不进行推送
*/
TIM_OFFLINE_PUSH_NO_PUSH = 1,
};
/**
* 安卓离线推送模式
*/
typedef NS_ENUM(NSInteger, TIMAndroidOfflinePushNotifyMode) {
/**
* 通知栏消息
*/
TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_NOTIFICATION = 0x00,
/**
* 不弹窗,由应用自行处理
*/
TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_CUSTOM = 0x01,
};
/**
* 群组成员是否可见
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberVisibleType) {
... ... @@ -277,12 +313,12 @@ typedef NS_ENUM(NSInteger, TIMGroupAddOpt) {
* 禁止加群
*/
TIM_GROUP_ADD_FORBID = 0,
/**
* 需要管理员审批
*/
TIM_GROUP_ADD_AUTH = 1,
/**
* 任何人可以加入
*/
... ... @@ -391,6 +427,10 @@ typedef NS_ENUM(NSInteger, TIM_GROUP_INFO_CHANGE_TYPE){
* 群主变更
*/
TIM_GROUP_INFO_CHANGE_GROUP_OWNER = 0x05,
/**
* 群自定义字段变更
*/
TIM_GROUP_INFO_CHANGE_GROUP_CUSTOM = 0x06,
};
/**
... ... @@ -460,56 +500,238 @@ typedef NS_ENUM(NSInteger, TIM_GROUP_SYSTEM_TYPE){
};
/**
* 推送规则
* 群成员角色
*/
typedef NS_ENUM(NSInteger, TIMOfflinePushFlag) {
typedef NS_ENUM(NSInteger, TIMGroupMemberRole) {
/**
* 按照默认规则进行推送
* 未定义(没有获取该字段)
*/
TIM_OFFLINE_PUSH_DEFAULT = 0,
TIM_GROUP_MEMBER_UNDEFINED = 0,
/**
* 不进行推送
* 群成员
*/
TIM_OFFLINE_PUSH_NO_PUSH = 1,
TIM_GROUP_MEMBER_ROLE_MEMBER = 200,
/**
* 群管理员
*/
TIM_GROUP_MEMBER_ROLE_ADMIN = 300,
/**
* 群主
*/
TIM_GROUP_MEMBER_ROLE_SUPER = 400,
};
/**
* 安卓离线推送模式
* 群基本获取资料标志
*/
typedef NS_ENUM(NSInteger, TIMAndroidOfflinePushNotifyMode) {
typedef NS_ENUM(NSInteger, TIMGetGroupBaseInfoFlag) {
/**
* 通知栏消息
* 不获取群组资料
*/
TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_NOTIFICATION = 0x00,
TIM_GET_GROUP_BASE_INFO_FLAG_NONE = 0x00,
/**
* 不弹窗,由应用自行处理
* 获取群组名
*/
TIM_ANDROID_OFFLINE_PUSH_NOTIFY_MODE_CUSTOM = 0x01,
TIM_GET_GROUP_BASE_INFO_FLAG_NAME = 0x01,
/**
* 获取创建时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_CREATE_TIME = 0x01 << 1,
/**
* 获取群主id
*/
TIM_GET_GROUP_BASE_INFO_FLAG_OWNER_UIN = 0x01 << 2,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_SEQ = 0x01 << 3,
/**
* 获取最近一次修改群信息时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_TIME = 0x01 << 4,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NEXT_MSG_SEQ = 0x01 << 5,
/**
* 获取最近一次发消息时间
*/
TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG_TIME = 0x01 << 6,
/**
* (不可用)
*/
TIM_GET_GROUP_BASE_INFO_FLAG_APP_ID = 0x01 << 7,
/**
* 获取群成员数量
*/
TIM_GET_GROUP_BASE_INFO_FLAG_MEMBER_NUM = 0x01 << 8,
/**
* 获取最大群成员数量
*/
TIM_GET_GROUP_BASE_INFO_FLAG_MAX_MEMBER_NUM = 0x01 << 9,
/**
* 获取群公告
*/
TIM_GET_GROUP_BASE_INFO_FLAG_NOTIFICATION = 0x01 << 10,
/**
* 获取群简介
*/
TIM_GET_GROUP_BASE_INFO_FLAG_INTRODUCTION = 0x01 << 11,
/**
* 获取群头像
*/
TIM_GET_GROUP_BASE_INFO_FLAG_FACE_URL = 0x01 << 12,
/**
* 获取入群类型
*/
TIM_GET_GROUP_BASE_INFO_FLAG_ADD_OPTION = 0x01 << 13,
/**
* 获取群组类型
*/
TIM_GET_GROUP_BASE_INFO_FLAG_GROUP_TYPE = 0x01 << 14,
/**
* 获取最后一条群消息
*/
TIM_GET_GROUP_BASE_INFO_FLAG_LAST_MSG = 0x01 << 15,
/**
* 获取在线人数
*/
TIM_GET_GROUP_BASE_INFO_FLAG_ONLINE_NUM = 0x01 << 16,
/**
* 获取群成员是否可见标志
*/
TIM_GET_GROUP_BASE_INFO_VISIBLE = 0x01 << 17,
/**
* 获取群是否能被搜到标志
*/
TIM_GET_GROUP_BASE_INFO_SEARCHABLE = 0x01 << 18,
/**
* 获取群全员禁言时间
*/
TIM_GET_GROUP_BASE_INFO_ALL_SHUTUP = 0x01 << 19
};
/**
* 群成员角色
* 群成员角色过滤方式
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberRole) {
typedef NS_ENUM(NSInteger, TIMGroupMemberFilter) {
/**
* 未定义(没有获取该字段)
* 全部成员
*/
TIM_GROUP_MEMBER_UNDEFINED = 0,
TIM_GROUP_MEMBER_FILTER_ALL = 0x00,
/**
* 群成员
* 群
*/
TIM_GROUP_MEMBER_ROLE_MEMBER = 200,
TIM_GROUP_MEMBER_FILTER_SUPER = 0x01,
/**
* 管理员
* 管理员
*/
TIM_GROUP_MEMBER_ROLE_ADMIN = 300,
TIM_GROUP_MEMBER_FILTER_ADMIN = 0x02,
/**
* 群主
* 普通成员
*/
TIM_GROUP_MEMBER_ROLE_SUPER = 400,
TIM_GROUP_MEMBER_FILTER_COMMON = 0x04,
};
/**
* 群成员获取资料标志
*/
typedef NS_ENUM(NSInteger, TIMGetGroupMemInfoFlag) {
/**
* 入群时间
*/
TIM_GET_GROUP_MEM_INFO_FLAG_JOIN_TIME = 0x01,
/**
* 消息标志
*/
TIM_GET_GROUP_MEM_INFO_FLAG_MSG_FLAG = 0x01 << 1,
/**
* 角色
*/
TIM_GET_GROUP_MEM_INFO_FLAG_ROLE_INFO = 0x01 << 3,
/**
* 禁言时间
*/
TIM_GET_GROUP_MEM_INFO_FLAG_SHUTUP_TIME = 0x01 << 4,
/**
* 群名片
*/
TIM_GET_GROUP_MEM_INFO_FLAG_NAME_CARD = 0x01 << 5,
};
/**
* 群组操作结果
*/
typedef NS_ENUM(NSInteger, TIMGroupMemberStatus) {
/**
* 操作失败
*/
TIM_GROUP_MEMBER_STATUS_FAIL = 0,
/**
* 操作成功
*/
TIM_GROUP_MEMBER_STATUS_SUCC = 1,
/**
* 无效操作,加群时已经是群成员,移除群组时不在群内
*/
TIM_GROUP_MEMBER_STATUS_INVALID = 2,
/**
* 等待处理,邀请入群时等待对方处理
*/
TIM_GROUP_MEMBER_STATUS_PENDING = 3,
};
/**
* 群组未决请求类型
*/
typedef NS_ENUM(NSInteger, TIMGroupPendencyGetType) {
/**
* 申请入群
*/
TIM_GROUP_PENDENCY_GET_TYPE_JOIN = 0x0,
/**
* 邀请入群
*/
TIM_GROUP_PENDENCY_GET_TYPE_INVITE = 0x1,
};
/**
* 群组已决标志
*/
typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleStatus) {
/**
* 未处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_UNHANDLED = 0,
/**
* 被他人处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_OTHER_HANDLED = 1,
/**
* 被用户处理
*/
TIM_GROUP_PENDENCY_HANDLE_STATUS_OPERATOR_HANDLED = 2,
};
/**
* 群组已决结果
*/
typedef NS_ENUM(NSInteger, TIMGroupPendencyHandleResult) {
/**
* 拒绝申请
*/
TIM_GROUP_PENDENCY_HANDLE_RESULT_REFUSE = 0,
/**
* 同意申请
*/
TIM_GROUP_PENDENCY_HANDLE_RESULT_AGREE = 1,
};
/**
... ... @@ -520,12 +742,12 @@ typedef NS_ENUM(NSInteger, TIMFriendAllowType) {
* 同意任何用户加好友
*/
TIM_FRIEND_ALLOW_ANY = 0,
/**
* 需要验证
*/
TIM_FRIEND_NEED_CONFIRM = 1,
/**
* 拒绝任何人加好友
*/
... ... @@ -548,9 +770,56 @@ typedef NS_ENUM(NSInteger, TIMGender) {
* 女性
*/
TIM_GENDER_FEMALE = 2,
};
/**
* 操作类型
*/
typedef NS_ENUM(NSInteger, TIM_SNS_SYSTEM_TYPE){
/**
* 增加好友消息
*/
TIM_SNS_SYSTEM_ADD_FRIEND = 0x01,
/**
* 删除好友消息
*/
TIM_SNS_SYSTEM_DEL_FRIEND = 0x02,
/**
* 增加好友申请
*/
TIM_SNS_SYSTEM_ADD_FRIEND_REQ = 0x03,
/**
* 删除未决申请
*/
TIM_SNS_SYSTEM_DEL_FRIEND_REQ = 0x04,
/**
* 黑名单添加
*/
TIM_SNS_SYSTEM_ADD_BLACKLIST = 0x05,
/**
* 黑名单删除
*/
TIM_SNS_SYSTEM_DEL_BLACKLIST = 0x06,
/**
* 未决已读上报
*/
TIM_SNS_SYSTEM_PENDENCY_REPORT = 0x07,
/**
* 关系链资料变更
*/
TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE = 0x08,
};
/**
* 资料变更
*/
typedef NS_ENUM(NSInteger, TIM_PROFILE_SYSTEM_TYPE){
/**
好友资料变更
*/
TIM_PROFILE_SYSTEM_FRIEND_PROFILE_CHANGE = 0x01,
};
#pragma mark - block 回调
... ... @@ -583,7 +852,7 @@ typedef void (^TIMFail)(int code, NSString * msg);
typedef void (^TIMProgress)(NSInteger curSize, NSInteger totalSize);
/**
* 登成功回调
* 登成功回调
*/
typedef void (^TIMLoginSucc)(void);
... ... @@ -658,6 +927,74 @@ typedef void (^TIMFriendResultSucc)(TIMFriendResult *result);
*/
typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
/**
* 检查好友操作回调
*
* @param results 检查结果
*/
typedef void (^TIMCheckFriendResultArraySucc)(NSArray<TIMCheckFriendResult *> *results);
/**
* 群成员列表回调
*
* @param members 群成员列表
*/
typedef void (^TIMGroupMemberSucc)(NSArray * members);
/**
* 群列表结果回调
*
* @param groupList 群列表结果
*/
typedef void (^TIMGroupListSucc)(NSArray* groupList);
/**
* 本人群组内成员信息回调
*
* @param selfInfo 本人成员信息
*/
typedef void (^TIMGroupSelfSucc)(TIMGroupMemberInfo * selfInfo);
/**
* 群接受消息选项回调
*
* @param opt 群接受消息选项
*/
typedef void (^TIMGroupReciveMessageOptSucc)(TIMGroupReceiveMessageOpt opt);
/**
* 群成员列表回调(分页使用)
*
* @param members 群成员(TIMGroupMemberInfo*)列表
*/
typedef void (^TIMGroupMemberSuccV2)(uint64_t nextSeq, NSArray * members);
/**
* 群搜索回调
*
* @param totalNum 搜索结果的总数
* @param groups 请求的群列表片段
*/
typedef void (^TIMGroupSearchSucc)(uint64_t totalNum, NSArray * groups);
/**
* 获取群组未决请求列表成功
*
* @param meta 未决请求元信息
* @param pendencies 未决请求列表(TIMGroupPendencyItem)数组
*/
typedef void (^TIMGetGroupPendencyListSucc)(TIMGroupPendencyMeta * meta, NSArray<TIMGroupPendencyItem *> * pendencies);
/**
* 发送消息给多个用户失败
*
* @param code 错误码
* @param err 错误信息
* @param detailInfo 错误详情
*/
typedef void (^TIMSendToUsersFail)(int code, NSString *err, TIMSendToUsersDetailInfo *detailInfo);
#pragma mark - 基本类型
/// 实现 NSCoding 协议
... ... @@ -677,11 +1014,8 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///用户标识接入 SDK 的应用 ID,必填
@property(nonatomic,assign) int sdkAppId;
///用户的账号类型,必填
@property(nonatomic,strong) NSString * accountType;
///禁用 crash 上报,默认上报 (方法已废弃,客户需要自己集成 Crash 上报逻辑)
@property(nonatomic,assign) BOOL disableCrashReport DEPRECATED_ATTRIBUTE;
///用户的账号类型,新版本不需要再填写
//@property(nonatomic,strong) NSString * accountType;
///禁止在控制台打印 log
@property(nonatomic,assign) BOOL disableLogPrint;
... ... @@ -689,10 +1023,10 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///本地写 log 文件的等级,默认 DEBUG 等级
@property(nonatomic,assign) TIMLogLevel logLevel;
///log 文件路径,不设置时为默认路径
///log 文件路径,不设置时为默认路径,可以通过 TIMManager -> getLogPath 获取 log 路径
@property(nonatomic,strong) NSString * logPath;
///回调给 log 函数的 log 等级,默认 DEBUG 等级
///回调给 logFunc 函数的 log 等级,默认 DEBUG 等级
@property(nonatomic,assign) TIMLogLevel logFuncLevel;
///log 监听函数
... ... @@ -701,65 +1035,59 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///消息数据库路径,不设置时为默认路径
@property(nonatomic,strong) NSString * dbPath;
///网络监听器
@property(nonatomic,strong) id<TIMConnListener> connListener;
///网络监听器,监听网络连接成功失败的状态
@property(nonatomic,weak) id<TIMConnListener> connListener;
@end
/// 设置用户配置信息
@interface TIMUserConfig : NSObject
///禁用本地存储(暂未实现)
//@property(nonatomic,assign) BOOL disableStorage;
///禁用本地存储(AVChatRoom,BChatRoom 消息数量很大,出于程序性能的考虑,默认不存本地)
@property(nonatomic,assign) BOOL disableStorage;
///禁止消息已读自动上报,一旦禁用自动上报,需要开发者显式调用 setReadMessage ,详情请参考官网文档 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)
///默认情况下,出于性能考虑,当用户在终端 A 收到未读消息后,Server 默认会删除未读消息,但如果用户切换到终端 B 后,IM SDK 无法再同步到未读消息,未读计数也不会增加,如果需要在终端 B 下也有未读,请设置 disableAutoReport 为 YES,这个时候 Server 不会再主动删除未读消息。注意一旦这这样设置,开发者需要主动调用 TIMConversation.h -> setReadMessage ,否则未读消息会一直存在 Server,IM SDK 每次登录或则断网重连都会再次同步到未读消息,详情请参考官方文档 [自动已读上报](https://cloud.tencent.com/document/product/269/9151)。
@property(nonatomic,assign) BOOL disableAutoReport;
///开启 C2C 已读回执,只针对 C2C 消息生效,用户开启已读回执功能后,对方调用 setReadMessage 时会同步已读信息到本客户端,您可以在 TIMMessageReceiptListener 监听消息已读回执
///已读回执是自己发出去的消息,对方设置为已读后,自己能收到已读的回调,只针对单聊(C2C)会话生效,默认是关闭的,如果需要开启,请设置 enableReadReceipt 为 YES,收到消息的用户需要显式调用 TIMConversation.h -> setReadMessage,发消息的用户才能通过 TIMMessageReceiptListener 监听到消息的已读回执。
@property(nonatomic,assign) BOOL enableReadReceipt;
///不开启最近联系人(暂未实现)
//@property(nonatomic,assign) BOOL disableRecnetContact;
///不通过 onNewMessage: 抛出最近联系人的最后一条消息(暂未实现)
//@property(nonatomic,assign) BOOL disableRecentContactNotify;
///设置默认拉取的群组资料
///设置默认拉取的群组资料,如果想要拉取自定义字段,要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段配置对应的 "自定义字段" 和用户操作权限,控制台配置之后 5 分钟后才会生效。
@property(nonatomic,strong) TIMGroupInfoOption * groupInfoOpt;
///设置默认拉取的群成员资料
///设置默认拉取的群成员资料,如果想要拉取自定义字段,要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段配置对应的 "自定义字段" 和用户操作权限,控制台配置之后 5 分钟后才会生效。
@property(nonatomic,strong) TIMGroupMemberInfoOption * groupMemberInfoOpt;
///关系链参数
@property(nonatomic,strong) TIMFriendProfileOption * friendProfileOpt;
///用户登录状态监听器
@property(nonatomic,strong) id<TIMUserStatusListener> userStatusListener;
///用户登录状态监听器,用于监听用户被踢,断网重连失败,userSig 过期的通知
@property(nonatomic,weak) id<TIMUserStatusListener> userStatusListener;
///会话刷新监听器(未读计数、已读同步)
@property(nonatomic,strong) id<TIMRefreshListener> refreshListener;
///会话刷新监听器,用于监听会话的刷新
@property(nonatomic,weak) id<TIMRefreshListener> refreshListener;
///消息已读回执监听器
@property(nonatomic,strong) id<TIMMessageReceiptListener> messageReceiptListener;
///消息已读回执监听器,用于监听消息已读回执,enableReadReceipt 字段需要设置为 YES
@property(nonatomic,weak) id<TIMMessageReceiptListener> messageReceiptListener;
///消息 svr 重写监听器
@property(nonatomic,strong) id<TIMMessageUpdateListener> messageUpdateListener;
///消息修改监听器,用于监听消息状态的变化
@property(nonatomic,weak) id<TIMMessageUpdateListener> messageUpdateListener;
///消息撤回监听器
@property(nonatomic,strong) id<TIMMessageRevokeListener> messageRevokeListener;
///消息撤回监听器,用于监听会话中的消息撤回通知
@property(nonatomic,weak) id<TIMMessageRevokeListener> messageRevokeListener;
///文件上传进度监听器
@property(nonatomic,strong) id<TIMUploadProgressListener> uploadProgressListener;
///文件上传进度监听器,发送语音,图片,视频,文件消息的时候需要先上传对应文件到服务器,这里可以监听上传进度
@property(nonatomic,weak) id<TIMUploadProgressListener> uploadProgressListener;
///群组事件通知监听器
@property(nonatomic,strong) id<TIMGroupEventListener> groupEventListener;
@property(nonatomic,weak) id<TIMGroupEventListener> groupEventListener;
///关系链数据本地缓存监听器
@property(nonatomic,strong) id<TIMFriendshipListener> friendshipListener;
@property(nonatomic,weak) id<TIMFriendshipListener> friendshipListener;
@end
/// 登参数
/// 登参数
@interface TIMLoginParam : NSObject
///用户名
... ... @@ -786,7 +1114,7 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///Group 消息声音,不设置传入 nil
@property(nonatomic,strong) NSString * groupSound;
///Video 音视频邀请声音,不设置传入 nil
///Video 音视频邀请声音,不设置传入 nil (暂不支持)
@property(nonatomic,strong) NSString * videoSound;
@end
... ... @@ -794,7 +1122,7 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
/// SetToken 参数
@interface TIMTokenParam : NSObject
///获取的客户端 Token 信息
///token 是苹果后台对客户端的唯一标识,需要主动调用系统 API 向苹果请求获取
@property(nonatomic,strong) NSData* token;
///业务 ID,传递证书时分配
... ... @@ -858,6 +1186,9 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///Android 离线 Push 时声音字段信息
@property(nonatomic,strong) NSString * sound;
///为了保证在 Android 8.0 系统以上的 OPPO 手机上能收到离线推送消息,需要 app 在该手机上创建 channelID,并且设置该参数。
@property(nonatomic,strong) NSString * OPPOChannelID;
///离线推送时通知形式
@property(nonatomic,assign) TIMAndroidOfflinePushNotifyMode notifyMode;
... ... @@ -869,11 +1200,33 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///离线 Push 时声音字段信息
@property(nonatomic,strong) NSString * sound;
///忽略 badge 计数
///忽略 badge 计数,如果设置为 YES,在 iOS 接收端,这条消息不会使 APP 的应用图标未读计数增加
@property(nonatomic,assign) BOOL ignoreBadge;
@end
/// 填入 sound 字段表示接收时不会播放声音
extern NSString * const kIOSOfflinePushNoSound;
/// 自定义消息 push
@interface TIMOfflinePushInfo : NSObject
///自定义消息描述信息,做离线Push时文本展示
@property(nonatomic,strong) NSString * desc;
///离线 Push 时扩展字段信息
@property(nonatomic,strong) NSString * ext;
///推送规则标志
@property(nonatomic,assign) TIMOfflinePushFlag pushFlag;
///iOS离线推送配置
@property(nonatomic,strong) TIMIOSOfflinePushConfig * iosConfig;
///Android离线推送配置
@property(nonatomic,strong) TIMAndroidOfflinePushConfig * androidConfig;
@end
/// 群组内的本人信息
@interface TIMGroupSelfInfo : NSObject
... ... @@ -952,10 +1305,20 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
@property(nonatomic,strong) TIMGroupSelfInfo* selfInfo;
///自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型
@property(nonatomic,strong) NSDictionary* customInfo;
@property(nonatomic,strong) NSDictionary<NSString *,NSData *>* customInfo;
@end
/// 获取群组信息结果
@interface TIMGroupInfoResult : TIMGroupInfo
/// 结果 0:成功;非0:失败
@property(nonatomic,assign) int resultCode;
/// 结果信息
@property(nonatomic,strong) NSString *resultInfo;
@end
/// 事件上报信息
@interface TIMEventReportItem : NSObject
... ... @@ -979,8 +1342,8 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///需要获取的群组信息标志(TIMGetGroupBaseInfoFlag),默认为0xffffff
@property(nonatomic,assign) uint64_t groupFlags;
///需要获取群组资料的自定义信息(NSString*)列表
@property(nonatomic,strong) NSArray * groupCustom;
///需要获取群组资料的自定义信息(NSString*)列表 (接口已废弃,控制台配置群组自定义字段后,SDK 会根据权限自动拉取)
@property(nonatomic,strong) NSArray * groupCustom DEPRECATED_ATTRIBUTE;
@end
... ... @@ -988,10 +1351,10 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
@interface TIMGroupMemberInfoOption : NSObject
///需要获取的群成员标志(TIMGetGroupMemInfoFlag),默认为0xffffff
@property(nonatomic,assign) uint64_t memberFlags;
@property(nonatomic,assign) uint64_t memberFlags ;
///需要获取群成员资料的自定义信息(NSString*)列表
@property(nonatomic,strong) NSArray * memberCustom;
///需要获取群成员资料的自定义信息(NSString*)列表 (接口已废弃,控制台配置群成员自定义字段后,SDK 会根据权限自动拉取)
@property(nonatomic,strong) NSArray * memberCustom DEPRECATED_ATTRIBUTE;
@end
... ... @@ -1016,6 +1379,9 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///自定义字段集合,key 是 NSString*类型,value 是 NSData*类型
@property(nonatomic,strong) NSDictionary* customInfo;
///如果是自己,可以获取自己的群接收选项
@property(nonatomic,assign) TIMGroupReceiveMessageOpt receiveMessageOpt;
@end
///资料与关系链
... ... @@ -1029,44 +1395,71 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
///用户资料
@interface TIMUserProfile : TIMCodingModel
///用户 identifier
/**
* 用户 identifier
*/
@property(nonatomic,strong) NSString* identifier;
///用户昵称
/**
* 用户昵称
*/
@property(nonatomic,strong) NSString* nickname;
///好友验证方式
/**
* 好友验证方式
*/
@property(nonatomic,assign) TIMFriendAllowType allowType;
///用户头像
/**
* 用户头像
*/
@property(nonatomic,strong) NSString* faceURL;
///用户签名
/**
* 用户签名
*/
@property(nonatomic,strong) NSData* selfSignature;
///用户性别
/**
* 用户性别
*/
@property(nonatomic,assign) TIMGender gender;
///用户生日
/**
* 用户生日
*/
@property(nonatomic,assign) uint32_t birthday;
///用户区域
/**
* 用户区域
*/
@property(nonatomic,strong) NSData* location;
///用户语言
/**
* 用户语言
*/
@property(nonatomic,assign) uint32_t language;
///等级
/**
* 等级
*/
@property(nonatomic,assign) uint32_t level;
///角色
/**
* 角色
*/
@property(nonatomic,assign) uint32_t role;
///自定义字段集合,key 是 NSString 类型,value 是 NSData 类型或者 NSNumber 类型(key 值按照后台配置的字符串传入)
/**
* 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
* key值按照后台配置的字符串传入,不包括 TIMProfileTypeKey_Custom_Prefix 前缀
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
typedef void(^ProfileCallBack) (TIMUserProfile * profile);
/**
* 好友
*/
... ... @@ -1102,12 +1495,300 @@ typedef void (^TIMFriendResultArraySucc)(NSArray<TIMFriendResult *> *results);
*/
@property(nonatomic,assign) uint64_t addTime;
///自定义字段集合,key 是 NSString 类型,value 是 NSData 类型或者 NSNumber 类型(key 值按照后台配置的字符串传入)
/**
* 自定义字段集合,key是NSString类型,value是NSData类型或者NSNumber类型
* key值按照后台配置的字符串传入,不包括 TIMFriendTypeKey_Custom_Prefix 前缀
*/
@property(nonatomic,strong) NSDictionary* customInfo;
///好友资料
/**
* 好友资料
*/
@property(nonatomic,strong) TIMUserProfile *profile;
@end
/**
* 创建群参数
*/
@interface TIMCreateGroupInfo : TIMCodingModel
/**
* 群组Id,nil则使用系统默认Id
*/
@property(nonatomic,strong) NSString* group;
/**
* 群名
*/
@property(nonatomic,strong) NSString* groupName;
/**
* 群类型:Private,Public,ChatRoom,AVChatRoom,BChatRoom
*/
@property(nonatomic,strong) NSString* groupType;
/**
* 是否设置入群选项,Private类型群组请设置为false
*/
@property(nonatomic,assign) BOOL setAddOpt;
/**
* 入群选项
*/
@property(nonatomic,assign) TIMGroupAddOpt addOpt;
/**
* 最大成员数,填0则系统使用默认值
*/
@property(nonatomic,assign) uint32_t maxMemberNum;
/**
* 群公告
*/
@property(nonatomic,strong) NSString* notification;
/**
* 群简介
*/
@property(nonatomic,strong) NSString* introduction;
/**
* 群头像
*/
@property(nonatomic,strong) NSString* faceURL;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
/**
* 创建成员(TIMCreateGroupMemberInfo*)列表
*/
@property(nonatomic,strong) NSArray <TIMCreateGroupMemberInfo *>* membersInfo;
@end
/**
* 未决请求选项
*/
@interface TIMGroupPendencyOption : TIMCodingModel
/**
* 拉取的起始时间 0:拉取最新的
*/
@property(nonatomic,assign) uint64_t timestamp;
/**
* 每页的数量,最大值为 10,设置超过 10,也最多只能拉回 10 条未决
*/
@property(nonatomic,assign) uint32_t numPerPage;
@end
/**
* 未决请求元信息
*/
@interface TIMGroupPendencyMeta : TIMCodingModel
/**
* 下一次拉取的起始时间戳
*/
@property(nonatomic,assign) uint64_t nextStartTime;
/**
* 已读时间戳大小
*/
@property(nonatomic,assign) uint64_t readTimeSeq;
/**
* 未决未读数
*/
@property(nonatomic,assign) uint32_t unReadCnt;
@end
/**
* 创建群组时的成员信息
*/
@interface TIMCreateGroupMemberInfo : TIMCodingModel
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 成员类型
*/
@property(nonatomic,assign) TIMGroupMemberRole role;
/**
* 自定义字段集合,key是NSString*类型,value是NSData*类型
*/
@property(nonatomic,strong) NSDictionary* customInfo;
@end
/**
* 成员操作返回值
*/
@interface TIMGroupMemberResult : NSObject
/**
* 被操作成员
*/
@property(nonatomic,strong) NSString* member;
/**
* 返回状态
*/
@property(nonatomic,assign) TIMGroupMemberStatus status;
@end
/**
* 未决申请
*/
@interface TIMGroupPendencyItem : TIMCodingModel
/**
* 相关群组id
*/
@property(nonatomic,strong) NSString* groupId;
/**
* 请求者id,请求加群:请求者,邀请加群:邀请人
*/
@property(nonatomic,strong) NSString* fromUser;
/**
* 判决者id,请求加群:0,邀请加群:被邀请人
*/
@property(nonatomic,strong) NSString* toUser;
/**
* 未决添加时间
*/
@property(nonatomic,assign) uint64_t addTime;
/**
* 未决请求类型
*/
@property(nonatomic,assign) TIMGroupPendencyGetType getType;
/**
* 已决标志
*/
@property(nonatomic,assign) TIMGroupPendencyHandleStatus handleStatus;
/**
* 已决结果
*/
@property(nonatomic,assign) TIMGroupPendencyHandleResult handleResult;
/**
* 申请或邀请附加信息
*/
@property(nonatomic,strong) NSString* requestMsg;
/**
* 审批信息:同意或拒绝信息
*/
@property(nonatomic,strong) NSString* handledMsg;
/**
* 同意申请
*
* @param msg 同意理由,选填
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
-(void) accept:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 拒绝申请
*
* @param msg 拒绝理由,选填
* @param succ 成功回调
* @param fail 失败回调,返回错误码和错误描述
*/
-(void) refuse:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 用户自己的id
*/
@property(nonatomic,strong) NSString* selfIdentifier;
@end
/**
* 关系链变更详细信息
*/
@interface TIMSNSChangeInfo : NSObject
/**
* 用户 identifier
*/
@property(nonatomic,strong) NSString * identifier;
/**
* 用户昵称
*/
@property(nonatomic,strong) NSString * nickname;
/**
* 申请添加时有效,添加理由
*/
@property(nonatomic,strong) NSString * wording;
/**
* 申请时填写,添加来源
*/
@property(nonatomic,strong) NSString * source;
/**
* 备注 type=TIM_SNS_SYSTEM_SNS_PROFILE_CHANGE 有效
*/
@property(nonatomic,strong) NSString * remark;
@end
/**
* 发送消息给多用户的失败回调信息
*/
@interface TIMSendToUsersDetailInfo : NSObject
/**
* 发送消息成功的目标用户数
*/
@property(nonatomic,assign) uint32_t succCnt;
/**
* 发送消息失败的目标用户数
*/
@property(nonatomic,assign) uint32_t failCnt;
/**
* 失败信息(TIMSendToUsersErrInfo*)列表
*/
@property(nonatomic,strong) NSArray *errInofs;
@end
/**
* 发送消息给多用户的失败信息
*/
@interface TIMSendToUsersErrInfo : NSObject
/**
* 发送消息失败的目标用户id
*/
@property(nonatomic,strong) NSString *identifier;
/**
* 错误码
*/
@property(nonatomic,assign) int code;
/**
* 错误描述
*/
@property(nonatomic,strong) NSString *err;
@end
#endif
... ...
/////////////////////////////////////////////////////////////////////
//
// TIMConversation+MsgExt.h
// IMMessageExt
// 腾讯云通信服务 IMSDK
//
// Created by tomzhu on 2016/12/27.
// 模块名称:TIMConversation + MsgExt
//
// 模块功能:此处主要存放待废弃的 API 函数,建议您使用 TIMConversation.h 内部声明的接口函数
//
/////////////////////////////////////////////////////////////////////
#ifndef TIMConversation_h
#define TIMConversation_h
#import "TIMConversation.h"
#import "TIMMessage+MsgExt.h"
@interface TIMConversation (MsgExt)
/**
* 保存会话消息
*
* 保存消息到消息列表,这里只保存在本地。
*
* @param msg 消息体
* @param sender 发送方
* @param isReaded 是否已读,如果发送方是自己,默认已读
*
* @return 0:成功;1:失败
*/
- (int)saveMessage:(TIMMessage*)msg sender:(NSString*)sender isReaded:(BOOL)isReaded;
/**
* 获取会话漫游消息
*
* 1. 登录后可以获取漫游消息,单聊和群聊消息免费漫游7天,用户有额外消息漫游需求时,可前往 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 消息 ->消息漫游时长 购买,具体资费请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673)。
* 2. 如果本地消息全部都是连续的,则不会通过网络获取,如果本地消息不连续,会通过网络获取断层消息。
* 3. 对于图片、语音等资源类消息,消息体只会包含描述信息,需要通过额外的接口下载数据,详情请参考 [消息收发](https://cloud.tencent.com/document/product/269/9150)中的 "消息解析" 部分文档。
*
* @param count 获取数量
* @param last 上次最后一条消息,如果 last 为 nil,从最新的消息开始读取
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0:本次操作成功;1:本次操作失败
*/
- (int)getMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
@interface TIMConversation (MsgExt)
/**
* 向前获取会话漫游消息
... ... @@ -58,21 +30,6 @@
- (int)getMessageForward:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 获取本地会话消息
*
* 1. 对于单聊,登录后可以获取本地缓存消息
* 2. 对于群组,开启最近联系人漫游(登录之后 SDK 默认开启,可以通过 TIMUserConfig 里面的 disableRecnetContact 关闭)的情况下,登录后只能获取最近一条消息,可通过 getMessage 获取漫游消息
*
* @param count 获取数量
* @param last 上次最后一条消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0:本次操作成功;1:本次操作失败
*/
- (int)getLocalMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 获取指定会话消息
*
* @param locators 消息定位符(TIMMessageLocator)数组
... ... @@ -84,111 +41,11 @@
- (int)findMessages:(NSArray*)locators succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 撤回消息
*
* 1. 仅 C2C 和 GROUP 会话有效、onlineMessage 无效、AVChatRoom 和 BChatRoom 无效。
* 2. 可以在 TIMUserConfig 设置的 TIMMessageRevokeListener 监听 onRevokeMessage 消息撤回回调。
* 3. 遍历本地消息列表,如果消息的 respondsToLocator 函数返回 YES,则是对应的消息,您可以在 UI 上执行删除操作,具体可以参考 TMessageController.h 里面的 onRevokeMessage 回调的实现。
*
* @param msg 被撤回的消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0:本次操作成功;1:本次操作失败
*/
- (int)revokeMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 同步群的消息撤回通知
*
* 针对群组,断线重连后,如果用户处于群组聊天界面,需要业务端主动同步该群组会话的消息撤回通知。其他场景不需要主动同步消息撤回通知。
*
* @param succ 成功时回调,同步的通知会通过 TIMMessageRevokeListener 抛出
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)syncRevokeNotify:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 删除本地会话消息
*
* 可以在保留会话同时删除本地的会话消息。
*
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 设置已读消息
*
* 1. 如果在 TIMUserConfig 关闭了自动已读上报(设置 disableAutoReport 为 YES),这里需要显示调用 setReadMessage ,消息的已读状态才会改变。
* 2. 如果在 TIMUserConfig 开启了消息回执(设置 enableReadReceipt 为 YES),收消息的用户需要显示调用 setReadMessage ,发消息的用户才能通过 TIMMessageReceiptListener 监听到消息的已读回执。
* 3. 如果您需要设置单条消息的已读状态,请使用 TIMMessage+MsgExt.h 中的 setCustomInt 自定义字段接口设置,通过 customInt 获取,需要注意的是,这个接口设置的字段只在本地保存,如果切换了终端,或则 APP 被卸载,这个值都会失效。
*
* @param readed 会话内最近一条已读的消息,nil 表示上报最新消息
*
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 表示成功
*/
- (int)setReadMessage:(TIMMessage*)readed succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取会话的未读计数
*
* 1. 单终端,未卸载 APP 的情况下,您可以通过当前接口获取准确的未读计数。
* 2. 如果需要在多终端或则程序 APP 卸载重装后未读计数依然准确,请设置 TIMUserConfig 的 disableAutoReport 为 YES,然后显示调用 setReadMessage。详情请参考 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)
*
* @return 返回未读计数
*/
- (int)getUnReadMessageNum;
/**
* 获取最后一条消息
*
* @return 最后一条消息
*/
- (TIMMessage*)getLastMsg;
/**
* 将消息导入本地数据库
*
* @param msgs 消息(TIMMessage*)列表
*
* @return 0:成功;1:失败
*/
- (int)importMessages:(NSArray*)msgs;
/**
* 设置会话草稿
*
* UI 展示最近联系人列表时,时常会展示用户的草稿内容,ImSDK 提供了设置和获取草稿的接口,用户可以通过此接口设置会话的草稿信息。草稿信息会存本地数据库,重新登录后依然可以获取。
*
* @param draft 草稿内容,详情请参考 TIMMessage+MsgExt.h 里面的 TIMMessageDraft 定义
*
* @return 0:成功;1:失败
*/
- (int)setDraft:(TIMMessageDraft*)draft;
/**
* 获取会话草稿
*
* @return 草稿内容,没有草稿返回 nil
*/
- (TIMMessageDraft*)getDraft;
/**
* 禁用本会话的存储(暂未实现)
* 获取自己的 id
*
* 1. 需要 initSdk 之后调用
* 2. 只对当前初始化有效,重启后需要重新设置
* @return 用户 id
*/
- (void)disableStorage;
- (NSString*)getSelfIdentifier;
@end
... ...
/////////////////////////////////////////////////////////////////////
//
// TIMConversation.h
// ImSDK
// 腾讯云通信服务 IMSDK
//
// Created by bodeng on 28/1/15.
// Copyright (c) 2015 tencent. All rights reserved.
// 模块名称:TIMConversation 会话模块
//
// 模块功能:一个会话对应一个聊天窗口,比如跟一个好友的 C2C 聊天叫做一个会话,一个聊天群也叫做一个会话。
//
// TIMConversation 提供的接口函数都是围绕消息的相关操作,包括:消息发送、获取历史消息、设置消息已读、撤回和删除等等。
//
/////////////////////////////////////////////////////////////////////
#ifndef ImSDK_TIMConversation_h
#define ImSDK_TIMConversation_h
#import "TIMComm.h"
#import "TIMCallback.h"
#import "TIMMessage.h"
@class TIMMessage;
/**
* 会话
*/
@interface TIMConversation : NSObject
#pragma mark 一,发消息
/////////////////////////////////////////////////////////////////////////////////
//
// (一)发消息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 发消息相关接口
/// @{
/**
* 发送消息
* 1.1 发送消息
*
* TIMMessage 由多个 TIMElem 组成,每个 TIMElem 可以是文本和图片,也就是说每一条消息可包含多个文本和多张图片。详情请参考官网文档 [消息收发](https://cloud.tencent.com/document/product/269/9150)
* TIMMessage 由多个 TIMElem 组成,一个 TIMElem 可以是一串文本,也可以是一张图片。
* 虽然说每一条消息都可以包含多个 TIMElem,但这个并不常用,通常您只需要在一个 TIMMessage 塞入一个 TIMElem 即可。
*
* 详情请参考官网文档 [消息收发](https://cloud.tencent.com/document/product/269/9150)
*
* @param msg 消息体
* @param succ 发送成功时回调
... ... @@ -33,10 +47,15 @@
- (int)sendMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 发送在线消息(服务器不保存消息)
* 1.2 发送在线消息(无痕消息)
*
* “在线消息”,也可以称为是“无痕消息”。跟普通消息的区别在于:在线消息不会被云服务存储,也不会存储于本地数据库中。
* 如果接收者在线,可以收到消息,但如果接收者离线,重新上线后也不能通过 getMessage() 接口从历史消息里查到它们。
*
* 该类型消息比较适合用作发送广播通知等不重要的提示消息。
*
* 1. 对于某些场景,需要发送在线消息,即用户在线时收到消息,如果用户不在线,下次登录也不会看到消息,可用于通知类消息,这种消息不会进行存储,也不会计入未读计数。发送接口与 sendMessage 类似。
* 2. 暂不支持 AVChatRoom 和 BChatRoom 类型。
* 1. 在线消息不会被计入未读计数
* 2. 暂不支持在 AVChatRoom 和 BChatRoom 中发送。
*
* @param msg 消息体
* @param succ 成功回调
... ... @@ -46,19 +65,169 @@
*/
- (int)sendOnlineMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
///@}
#pragma mark 二,获取消息
/////////////////////////////////////////////////////////////////////////////////
//
// (二)获取消息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 获取消息相关接口
/// @{
/**
* 2.1 从云端拉取历史消息
*
* 如果用户的网络正常且登录成功,可以通过该接口拉取历史消息,该接口会返回云端存储的历史消息(最多存储7天)。
*
* 1. 单聊和群聊消息会在云端免费存储7天,如果希望存储更长时间,可前往
* ([IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 消息 ->消息漫游时长)进行购买,
* 具体资费请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673)。
*
* 2. 对于图片、语音等资源类消息,获取到的消息体只会包含描述信息,需要通过额外的接口下载数据,
* 详情请参考 [消息收发](https://cloud.tencent.com/document/product/269/9150)中的 "消息解析" 部分文档。
*
* @param count 获取数量
* @param last 上次最后一条消息,如果 last 为 nil,从最新的消息开始读取
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0:本次操作成功;1:本次操作失败
*/
- (int)getMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 2.2 从本地数据库中获取历史消息
*
* 如果客户网络异常或登录失败,可以通过该接口获取本地存储的历史消息,调用方法和 getMessage() 一致
* AVChatRoom,BChatRoom 消息数量很大,出于程序性能的考虑,默认不存本地,不能通过这个接口拉取到对应群消息
*
* @param count 获取数量
* @param last 上次最后一条消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0:本次操作成功;1:本次操作失败
*/
- (int)getLocalMessage:(int)count last:(TIMMessage*)last succ:(TIMGetMsgSucc)succ fail:(TIMFail)fail;
/**
* 2.3 获取当前会话的最后一条消息
*
* 可用于“装饰”会话列表,目前大多数 App 的会话列表中都会显示该会话的最后一条消息
*
* @return 最后一条消息
*/
- (TIMMessage*)getLastMsg;
///@}
#pragma mark 三,设置消息已读
/////////////////////////////////////////////////////////////////////////////////
//
// (三)设置消息已读
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 设置消息已读
/// @{
/**
* 3.1 标记消息为已读状态
*
* 该接口会标记当前消息以及之前的所有消息为已读状态,标记消息为已读状态会有两个作用:
* 1. 已经被标记为已读的消息不会重复提醒,下次登录或者换一台终端设备登录 IM 时,都不会再次收到该消息的未读提醒。
* 2. 如果发送者通过 TIMUserConfig -> enableReadReceipt 开启了 “被阅回执”,接收者在标记已读状态时,发送者会收到“被阅提醒”。
*
* @note 该接口尚不支持标记单独一条消息,只能标记一批。即标记当前一条消息,之前的消息也会全被标记为已读状态。
*
* @param fromMsg 会话内最近一条已读的消息,nil 表示上报最新消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 表示成功
*/
- (int)setReadMessage:(TIMMessage*)fromMsg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 3.2 获取会话的未读消息计数
*
* 1. 同一个终端登录,在未卸载 APP 的情况下,您可以通过当前接口获取的未读消息的个数。
* 2. 如果希望换一台终端也能取到同样的未读计数提醒,或者卸载 APP 再重装,未读计数提醒还能保留卸载前的状态,
* 就需要设置 TIMUserConfig 的 disableAutoReport 为 YES,这样可以开启多终端同步未读提醒。
*
* 详情参考 [未读消息计数](https://cloud.tencent.com/document/product/269/9151)
*
* @return 返回未读计数
*/
- (int)getUnReadMessageNum;
///@}
#pragma mark 四,撤回/删除消息
/////////////////////////////////////////////////////////////////////////////////
//
// (四)撤回/删除消息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 撤回/删除消息相关接口
/// @{
/**
* 4.1 撤回一条已发送的消息(消息发送后 )
*
* 1. 消息撤回的有效时间为2分钟,即消息发出2分钟后不能再撤回。
* 2. 仅支持 C2C 会话和 GROUP 会话中发送的消息,无法撤销 OnlineMessage,也无法撤销 AVChatRoom 和 BChatRoom 中的消息。
* 3. 您需要在 TIMUserConfig -> TIMMessageRevokeListener 监听 onRevokeMessage() 消息撤回回调,
* 如果消息撤回成功,消息的接收方会收到一次 onRevokeMessage:(TIMMessageLocator*) 回调,TIMMessageLocator 相当于一条消息的定位标志。
* 您可以在已收到的历史消息里进行遍历,通过 TIMMessage 中的 respondsToLocator() 接口进行比对,以便定位到该条消息。
*
* @param msg 被撤回的消息
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0:本次操作成功;1:本次操作失败
*/
- (int)revokeMessage:(TIMMessage*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 4.2 删除当前会话的本地历史消息
*
* @param succ 成功时回调
* @param fail 失败时回调
*
* @return 0 本次操作成功
*/
- (int)deleteLocalMessage:(TIMSucc)succ fail:(TIMFail)fail;
///@}
#pragma mark 五,获取会话信息
/////////////////////////////////////////////////////////////////////////////////
//
// (五)获取会话信息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 获取会话信息相关接口
/// @{
/**
* 5.1 获取会话类型
*
* @return 会话类型
*/
- (TIMConversationType)getType;
/**
* 获取会话人
* 5.2 获取会话 ID
*
* C2C:对方账号;Group:群组Id。
*
* 对同一个 C2C 会话或则群聊会话,getReceiver 获取的会话人都是固定的,C2C 获取的是对方账号,Group 获取的是群组 Id。
* 对同一个单聊或则群聊会话,getReceiver 获取的会话 ID 都是固定的,C2C 获取的是对方账号,Group 获取的是群组 Id。
*
* @return 会话人
*/
- (NSString*)getReceiver;
/**
* 获取群名称
* 5.3 获取群名称
*
* 获取群名称,只有群会话有效。
*
... ... @@ -66,20 +235,72 @@
*/
- (NSString*)getGroupName;
///@}
#pragma mark 六,草稿箱
/////////////////////////////////////////////////////////////////////////////////
//
// (六)草稿箱
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 草稿箱
/// @{
/**
* 获取会话类型
* 6.1 添加未编辑完的草稿消息
*
* @return 会话类型
* 在发送消息时,常常会遇到尚未编辑完毕就要切换到其它聊天窗口的情况,这些未编辑完的消息就可以通过 setDraft() 接口存储到草稿箱中。
* 草稿信息会存本地数据库,重新登录后依然可以获取。
*
*
* @param draft 草稿内容,详情请参考 TIMMessage.h 里面的 TIMMessageDraft 定义
*
* @return 0:成功;1:失败
*/
- (TIMConversationType)getType;
- (int)setDraft:(TIMMessageDraft*)draft;
/**
* 获取自己的 id
* 6.2 获取未编辑完的草稿消息
*
* @return 草稿内容,没有草稿返回 nil
*/
- (TIMMessageDraft*)getDraft;
///@}
#pragma mark 七,导入消息到会话
/////////////////////////////////////////////////////////////////////////////////
//
// (七)导入消息到会话
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 导入消息到会话相关接口
/// @{
/**
* 7.1 向本地消息列表中添加一条消息,但并不将其发送出去。
*
* 该接口主要用于满足向聊天会话中插入一些提示性消息的需求,比如“您已经退出该群”,这类消息有展示
* 在聊天消息区的需求,但并没有发送给其他人的必要。
* 所以 saveMessage() 相当于一个被禁用了网络发送能力的 sendMessage() 接口。
*
* @param msg 消息体
* @param sender 发送方
* @param isRead 是否已读,如果发送方是自己,默认已读
*
* @return 0:成功;1:失败
*/
- (int)saveMessage:(TIMMessage*)msg sender:(NSString*)sender isReaded:(BOOL)isRead;
/**
* 7.2 将消息导入本地数据库
*
* @param msgs 消息(TIMMessage*)列表
*
* @return 用户 id
* @return 0:成功;1:失败
*/
- (NSString*)getSelfIdentifier;
- (int)importMessages:(NSArray*)msgs;
///@}
@end
... ...
... ... @@ -10,99 +10,396 @@
#define TIMErrorCode_h
enum ERROR_CODE {
ERR_SUCC = 0,
ERR_PARSE_RESPONSE_FAILED = 6001, //解析响应失败
ERR_SERIALIZE_REQ_FAILED = 6002, //序列化请求失败
ERR_NO_SUCC_RESULT = 6003, //批量操作无成功结果
ERR_INVALID_CONVERSATION = 6004, //IM: 无效会话
ERR_LOADMSG_FAILED = 6005, //IM: 加载本地消息存储失败
ERR_FILE_TRANS_AUTH_FAILED = 6006, //IM: 文件传输 - 鉴权失败
ERR_FILE_TRANS_NO_SERVER = 6007, //IM: 文件传输 - 获取svr失败
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, //IM: 文件传输 - 上传失败
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, //IM: 文件传输 - 下载失败
ERR_HTTP_REQ_FAILED = 6010, //HTTP请求失败
ERR_TO_USER_INVALID = 6011, //IM: 无效接收方
ERR_REQUEST_TIMEOUT = 6012, //请求超时
ERR_SDK_NOT_INITIALIZED = 6013, //SDK未初始化
ERR_SDK_NOT_LOGGED_IN = 6014, //SDK未登录
ERR_IN_PROGESS = 6015, //执行中
ERR_INVALID_MSG_ELEM = 6016, //IM: 无效消息elem
ERR_INVALID_PARAMETERS = 6017, //API参数无效
ERR_INIT_CORE_FAIL = 6018, //INIT CORE模块失败
ERR_DATABASE_OPERATE_FAILED = 6019, //本地数据库操作失败
ERR_EXPIRED_SESSION_NODE = 6020, //SessionNode为null
ERR_INVALID_SDK_OBJECT = 6021, //无效的imsdk对象,例如用户自己生成TIMImage,或内部赋值错误导致的sdk对象无效
ERR_IO_OPERATION_FAILED = 6022, //本地IO操作失败
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, //在登录完成前进行了登出(在登录时返回)
ERR_TLSSDK_NOT_INITIALIZED = 6024, //tlssdk未初始化
ERR_TLSSDK_USER_NOT_FOUND = 6025, //TLSSDK没有找到相应的用户信息
ERR_NO_PREVIOUS_LOGIN = 6026, //自动登陆时并没有登陆过该用户
ERR_BIND_FAIL_UNKNOWN = 6100, //QALSDK未知原因BIND失败
ERR_BIND_FAIL_NO_SSOTICKET = 6101, //缺少SSO票据
ERR_BIND_FAIL_REPEATD_BIND = 6102, //重复BIND
ERR_BIND_FAIL_TINYID_NULL = 6103, //tiny为空
ERR_BIND_FAIL_GUID_NULL = 6104, //guid为空
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, //解注册包失败
ERR_BIND_FAIL_REG_TIMEOUT = 6106, //注册超时
ERR_BIND_FAIL_ISBINDING = 6107, //正在bind操作中
ERR_PACKET_FAIL_UNKNOWN = 6120, //发包未知错误
ERR_PACKET_FAIL_REQ_NO_NET = 6121, //发送请求包时没有网络,处理时转换成ERR_REQ_NO_NET_ON_REQ
ERR_PACKET_FAIL_RESP_NO_NET = 6122, //发送回复包时没有网络,处理时转换成ERR_REQ_NO_NET_ON_RSP
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, //发送请求包时没有权限
ERR_PACKET_FAIL_SSO_ERR = 6124, //SSO错误
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, //请求超时,处理时转化成ERR_REQUEST_TIMEOUT
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, //回复超时,处理时转化成ERR_REQUEST_TIMEOUT
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, //
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, //
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, //
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, //
ERR_PACKET_FAIL_LOGIC_ERR = 6131,
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, // proxy_manager没有完成svr数据同步
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, // proxy_manager正在进行svr数据同步
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, // proxy_manager同步失败
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, // proxy_manager请求参数,在本地检查不合法
ERR_GROUP_INVALID_FIELD = 6160, // group assistant请求字段中包含非预设字段
ERR_GROUP_STORAGE_DISABLED = 6161, // group assistant群资料本地存储没有开启
ERR_LOADGRPINFO_FAILED = 6162, // failed to load groupinfo from storage
ERR_REQ_NO_NET_ON_REQ = 6200, // 请求的时候没有网络
ERR_REQ_NO_NET_ON_RSP = 6201, // 响应的时候没有网络
ERR_SERIVCE_NOT_READY = 6205, // QALSDK服务未就绪
ERR_USER_SIG_EXPIRED = 6206, // 票据过期
ERR_LOGIN_AUTH_FAILED = 6207, // 账号认证失败(tinyid转换失败)
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, // 账号被踢
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, // 在应用启动后没有尝试联网
ERR_REQ_FAILED = 6210, // QAL执行失败
ERR_REQ_INVALID_REQ = 6211, // 请求非法,toMsgService非法
ERR_REQ_OVERLOADED = 6212, // 请求队列満
ERR_REQ_KICK_OFF = 6213, // 已经被其他终端踢了
ERR_REQ_SERVICE_SUSPEND = 6214, // 服务被暂停
ERR_REQ_INVALID_SIGN = 6215, // SSO签名错误
ERR_REQ_INVALID_COOKIE = 6216, // SSO cookie无效
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, // 登录时TLS回包校验,包体长度错误
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, // 登录时OPENSTATSVC向OPENMSG上报状态超时
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, // 登录时OPENSTATSVC向OPENMSG上报状态时解析回包失败
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, // 登录时TLS解密失败
ERR_WIFI_NEED_AUTH = 6221, // wifi需要认证
ERR_USER_CANCELED = 6222, // 用户已取消
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, //消息撤回超过了时间限制(默认2分钟)
ERR_LACK_UGC_EXT = 6224, // 缺少UGC扩展包
ERR_AUTOLOGIN_NEED_USERSIG = 6226, //自动登录,本地票据过期,需要userSig手动登录
ERR_REQ_CONTENT_ATTACK = 80001, // 消息内容安全打击
ERR_LOGIN_SIG_EXPIRE = 70001, // 登陆返回,票据过期
ERR_SDK_HAD_INITIALIZED = 90001, // SDK 已经初始化无需重复初始化
ERR_OPENBDH_BASE = 115000, // openbdh 错误码基
/////////////////////////////////////////////////////////////////////////////////
//
// (一)IM SDK 的错误码
//
/////////////////////////////////////////////////////////////////////////////////
// 通用错误码
ERR_SUCC = 0, ///< 无错误。
ERR_IN_PROGESS = 6015, ///< 执行中,请做好接口调用控制,例如,第一次初始化操作在回调前,后续的初始化操作会返回该错误码。
ERR_INVALID_PARAMETERS = 6017, ///< 参数无效,请检查参数是否符合要求,具体可查看错误信息进一步定义哪个字段。
ERR_IO_OPERATION_FAILED = 6022, ///< 操作本地 IO 错误,检查是否有读写权限,磁盘是否已满。
ERR_INVALID_JSON = 6027, ///< 错误的 JSON 格式,请检查参数是否符合接口的要求,具体可查看错误信息进一步定义哪个字段。
ERR_OUT_OF_MEMORY = 6028, ///< 内存不足,可能存在内存泄漏,iOS 平台使用 Instrument 工具,Android 平台使用 Profiler 工具,分析出什么地方的内存占用高。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
ERR_SDK_NOT_INITIALIZED = 6013, ///< IM SDK 未初始化,初始化成功回调之后重试。
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) 联系客服定位具体问题。
ERR_DATABASE_OPERATE_FAILED = 6019, ///< 本地数据库操作失败,可能是部分目录无权限或者数据库文件已损坏。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
ERR_SDK_COMM_INVALID_IDENTIFIER = 7003, ///< Identifier 非法,必须不为空,要求可打印 ASCII 字符(0x20-0x7e),长度不超过32字节。
ERR_SDK_COMM_FILE_NOT_FOUND = 7004, ///< 文件不存在,请检查文件路径是否正确。
ERR_SDK_COMM_FILE_TOO_LARGE = 7005, ///< 文件大小超出了限制,如果上传文件,最大限制是28MB。
ERR_SDK_COMM_FILE_SIZE_EMPTY = 7006, ///< 空文件,要求文件大小不是0字节,如果上传图片、语音、视频或文件,请检查文件是否正确生成。
ERR_SDK_COMM_FILE_OPEN_FAILED = 7007, ///< 文件打开失败,请检查文件是否存在,或者已被独占打开,引起 SDK 打开失败。
// 帐号错误码
ERR_SDK_NOT_LOGGED_IN = 6014, ///< IM SDK 未登录,请先登录,成功回调之后重试,或者已被踢下线,可使用 TIMManager getLoginUser 检查当前是否在线。
ERR_NO_PREVIOUS_LOGIN = 6026, ///< 自动登录时,并没有登录过该用户,这时候请调用 login 接口重新登录。
ERR_USER_SIG_EXPIRED = 6206, ///< UserSig 过期,请重新获取有效的 UserSig 后再重新登录。
ERR_LOGIN_KICKED_OFF_BY_OTHER = 6208, ///< 其他终端登录同一个帐号,引起已登录的帐号被踢,需重新登录。
ERR_SDK_ACCOUNT_LOGIN_IN_PROCESS = 7501, ///< 登录正在执行中,例如,第一次 login 或 autoLogin 操作在回调前,后续的 login 或 autoLogin 操作会返回该错误码。
ERR_SDK_ACCOUNT_LOGOUT_IN_PROCESS = 7502, ///< 登出正在执行中,例如,第一次 logout 操作在回调前,后续的 logout 操作会返回该错误码。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
// 消息错误码
ERR_INVALID_CONVERSATION = 6004, ///< 会话无效,getConversation 时检查是否已经登录,如未登录获取会话,会有此错误码返回。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
ERR_FILE_TRANS_UPLOAD_FAILED = 6008, ///< 文件传输上传失败,请检查网络是否连接,如果上传的是图片,确认图片能够正常打开。
ERR_FILE_TRANS_DOWNLOAD_FAILED = 6009, ///< 文件传输下载失败,请检查网络,或者文件、语音是否已经过期,目前资源文件存储7天。
ERR_HTTP_REQ_FAILED = 6010, ///< HTTP 请求失败,请检查 URL 地址是否合法,可在网页浏览器尝试访问该 URL 地址。
ERR_INVALID_MSG_ELEM = 6016, ///< IM SDK 无效消息 elem,具体可查看错误信息进一步定义哪个字段。
ERR_INVALID_SDK_OBJECT = 6021, ///< 无效的对象,例如用户自己生成 TIMImage 对象,或内部赋值错误导致对象无效。
ERR_SDK_MSG_BODY_SIZE_LIMIT = 8001, ///< 消息长度超出限制,消息长度不要超过8k,消息长度是各个 elem 长度的总和,elem 长度是所有 elem 字段的长度总和。
ERR_SDK_MSG_KEY_REQ_DIFFER_RSP = 8002, ///< 消息 KEY 错误,内部错误,网络请求包的 KEY 和 回复包的不一致。
// 群组错误码
ERR_SDK_GROUP_INVALID_ID = 8501, ///< 群组 ID 非法,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长48个字节,且前缀不能为 @TGS#(避免与服务端默认分配的群组 ID 混淆)。
ERR_SDK_GROUP_INVALID_NAME = 8502, ///< 群名称非法,群名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
ERR_SDK_GROUP_INVALID_INTRODUCTION = 8503, ///< 群简介非法,群简介最长240字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
ERR_SDK_GROUP_INVALID_NOTIFICATION = 8504, ///< 群公告非法,群公告最长300字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
ERR_SDK_GROUP_INVALID_FACE_URL = 8505, ///< 群头像 URL 非法,群头像 URL 最长100字节,可在网页浏览器尝试访问该 URL 地址。
ERR_SDK_GROUP_INVALID_NAME_CARD = 8506, ///< 群名片非法,群名片最长50字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
ERR_SDK_GROUP_MEMBER_COUNT_LIMIT = 8507, ///< 超过群组成员数的限制,在创建群和邀请成员时,指定的成员数超出限制,最大群成员数量:私有群是200人,公开群是2000人,聊天室是10000人,音视频聊天室和在线成员广播大群无限制。
ERR_SDK_GROUP_JOIN_PRIVATE_GROUP_DENY = 8508, ///< 不允许申请加入 Private 群组,任意群成员可邀请入群,且无需被邀请人同意。
ERR_SDK_GROUP_INVITE_SUPER_DENY = 8509, ///< 不允许邀请角色为群主的成员,请检查角色字段是否填写正确。
ERR_SDK_GROUP_INVITE_NO_MEMBER = 8510, ///< 不允许邀请0个成员,请检查成员字段是否填写正确。
// 关系链错误码
ERR_SDK_FRIENDSHIP_INVALID_PROFILE_KEY = 9001, ///< 资料字段非法,资料支持标配字段及自定义字段,其中自定义字段的关键字,必须是英文字母,且长度不得超过8字节,自定义字段的值最长不能超过500字节。
ERR_SDK_FRIENDSHIP_INVALID_ADD_REMARK = 9002, ///< 备注字段非法,最大96字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
ERR_SDK_FRIENDSHIP_INVALID_ADD_WORDING = 9003, ///< 请求添加好友的请求说明字段非法,最大120字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
ERR_SDK_FRIENDSHIP_INVALID_ADD_SOURCE = 9004, ///< 请求添加好友的添加来源字段非法,来源需要添加“AddSource_Type_”前缀。
ERR_SDK_FRIENDSHIP_FRIEND_GROUP_EMPTY = 9005, ///< 好友分组字段非法,必须不为空,每个分组的名称最长30字节,字符编码必须是 UTF-8 ,如果包含中文,可能用多个字节表示一个中文字符,请注意检查字符串的字节长度。
// 网络错误码
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
ERR_SDK_NET_AUTH_INVALID = 9503, ///< SSO 未完成鉴权,可能登录未完成,请在登录完成后再操作。
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) 提供使用接口、错误码、错误信息给客服解决。
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) 提供使用接口、错误码、错误信息给客服解决。
ERR_SDK_NET_FREQ_LIMIT = 9506, ///< 调用频率限制,最大每秒发起 5 次请求。
ERR_SDK_NET_REQ_COUNT_LIMIT = 9507, ///< 请求队列満,超过同时请求的数量限制,最大同时发起1000个请求。
ERR_SDK_NET_DISCONNECT = 9508, ///< 网络已断开,未建立连接,或者建立 socket 连接时,检测到无网络。
ERR_SDK_NET_ALLREADY_CONN = 9509, ///< 网络连接已建立,重复创建连接,内部错误。
ERR_SDK_NET_CONN_TIMEOUT = 9510, ///< 建立网络连接超时,请等网络恢复后重试。
ERR_SDK_NET_CONN_REFUSE = 9511, ///< 网络连接已被拒绝,请求过于频繁,服务端拒绝服务。
ERR_SDK_NET_NET_UNREACH = 9512, ///< 没有到达网络的可用路由,请等网络恢复后重试。
ERR_SDK_NET_SOCKET_NO_BUFF = 9513, ///< 系统中没有足够的缓冲区空间资源可用来完成调用,系统过于繁忙,内部错误。
ERR_SDK_NET_RESET_BY_PEER = 9514, ///< 对端重置了连接,可能服务端过载,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
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) 提供使用接口、错误码、错误信息给客服解决。
ERR_SDK_NET_HOST_GETADDRINFO_FAILED = 9516, ///< IP 地址解析失败,内部错误,可能是本地 imsdk_config 配置文件被损坏,读取到到 IP 地址非法。
ERR_SDK_NET_CONNECT_RESET = 9517, ///< 网络连接到中间节点或服务端重置,引起连接失效,内部错误,SDK 内部会自动重连,请等网络连接成功 onConnSucc ( iOS ) 或 onConnected ( Android ) 回调后重试。
ERR_SDK_NET_WAIT_INQUEUE_TIMEOUT = 9518, ///< 请求包等待进入待发送队列超时,发送时网络连接建立比较慢 或 频繁断网重连时,会出现该错误,请检查网络连接是否正常。
ERR_SDK_NET_WAIT_SEND_TIMEOUT = 9519, ///< 请求包已进入待发送队列,等待进入系统的网络 buffer 超时,数据包较多 或 发送线程处理不过来,内部错误。
ERR_SDK_NET_WAIT_ACK_TIMEOUT = 9520, ///< 请求包已进入系统的网络 buffer ,等待服务端回包超时,可能请求包没离开终端设备、中间路由丢弃、服务端意外丢包或回包被系统网络层丢弃,内部错误。
/////////////////////////////////////////////////////////////////////////////////
//
// (二)服务端的错误码
//
/////////////////////////////////////////////////////////////////////////////////
// SSO 接入层的错误码
ERR_SVR_SSO_CONNECT_LIMIT = -302 , ///< SSO 的连接数量超出限制,服务端拒绝服务。
ERR_SVR_SSO_VCODE = -10000, ///< 下发验证码标志错误。
ERR_SVR_SSO_D2_EXPIRED = -10001, ///< D2 过期。
ERR_SVR_SSO_A2_UP_INVALID = -10003, ///< A2 校验失败等场景使用。
ERR_SVR_SSO_A2_DOWN_INVALID = -10004, ///< 处理下行包时发现 A2 验证没通过或者被安全打击。
ERR_SVR_SSO_EMPTY_KEY = -10005, ///< 不允许空 D2Key 加密。
ERR_SVR_SSO_UIN_INVALID = -10006, ///< D2 中的 uin 和 SSO 包头的 uin 不匹配。
ERR_SVR_SSO_VCODE_TIMEOUT = -10007, ///< 验证码下发超时。
ERR_SVR_SSO_NO_IMEI_AND_A2 = -10008, ///< 需要带上 IMEI 和 A2 。
ERR_SVR_SSO_COOKIE_INVALID = -10009, ///< Cookie 非法。
ERR_SVR_SSO_DOWN_TIP = -10101, ///< 下发提示语,D2 过期。
ERR_SVR_SSO_DISCONNECT = -10102, ///< 断链锁屏。
ERR_SVR_SSO_IDENTIFIER_INVALID = -10103, ///< 失效身份。
ERR_SVR_SSO_CLIENT_CLOSE = -10104, ///< 终端自动退出。
ERR_SVR_SSO_MSFSDK_QUIT = -10105, ///< MSFSDK 自动退出。
ERR_SVR_SSO_D2KEY_WRONG = -10106, ///< SSO D2key 解密失败次数太多,通知终端需要重置,重新刷新 D2 。
ERR_SVR_SSO_UNSURPPORT = -10107, ///< 不支持聚合,给终端返回统一的错误码。终端在该 TCP 长连接上停止聚合。
ERR_SVR_SSO_PREPAID_ARREARS = -10108, ///< 预付费欠费。
ERR_SVR_SSO_PACKET_WRONG = -10109, ///< 请求包格式错误。
ERR_SVR_SSO_APPID_BLACK_LIST = -10110, ///< SDKAppID 黑名单。
ERR_SVR_SSO_CMD_BLACK_LIST = -10111, ///< SDKAppID 设置 service cmd 黑名单。
ERR_SVR_SSO_APPID_WITHOUT_USING = -10112, ///< SDKAppID 停用。
ERR_SVR_SSO_FREQ_LIMIT = -10113, ///< 频率限制(用户),频率限制是设置针对某一个协议的每秒请求数的限制。
ERR_SVR_SSO_OVERLOAD = -10114, ///< 过载丢包(系统),连接的服务端处理过多请求,处理不过来,拒绝服务。
// 资源文件错误码
ERR_SVR_RES_NOT_FOUND = 114000, ///< 要发送的资源文件不存在。
ERR_SVR_RES_ACCESS_DENY = 114001, ///< 要发送的资源文件不允许访问。
ERR_SVR_RES_SIZE_LIMIT = 114002, ///< 文件大小超过限制。
ERR_SVR_RES_SEND_CANCEL = 114003, ///< 用户取消发送,如发送过程中登出等原因。
ERR_SVR_RES_READ_FAILED = 114004, ///< 读取文件内容失败。
ERR_SVR_RES_TRANSFER_TIMEOUT = 114005, ///< 资源文件(如图片、文件、语音、视频)传输超时,一般是网络问题导致。
ERR_SVR_RES_INVALID_PARAMETERS = 114011, ///< 参数非法。
ERR_SVR_RES_INVALID_FILE_MD5 = 115066, ///< 文件 MD5 校验失败。
ERR_SVR_RES_INVALID_PART_MD5 = 115068, ///< 分片 MD5 校验失败。
// 后台公共错误码
ERR_SVR_COMM_INVALID_HTTP_URL = 60002, ///< HTTP 解析错误 ,请检查 HTTP 请求 URL 格式。
ERR_SVR_COMM_REQ_JSON_PARSE_FAILED = 60003, ///< HTTP 请求 JSON 解析错误,请检查 JSON 格式。
ERR_SVR_COMM_INVALID_ACCOUNT = 60004, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
ERR_SVR_COMM_INVALID_ACCOUNT_EX = 60005, ///< 请求 URI 或 JSON 包体中 Identifier 或 UserSig 错误。
ERR_SVR_COMM_INVALID_SDKAPPID = 60006, ///< SDKAppID 失效,请核对 SDKAppID 有效性。
ERR_SVR_COMM_REST_FREQ_LIMIT = 60007, ///< REST 接口调用频率超过限制,请降低请求频率。
ERR_SVR_COMM_REQUEST_TIMEOUT = 60008, ///< 服务请求超时或 HTTP 请求格式错误,请检查并重试。
ERR_SVR_COMM_INVALID_RES = 60009, ///< 请求资源错误,请检查请求 URL。
ERR_SVR_COMM_ID_NOT_ADMIN = 60010, ///< REST API 请求的 Identifier 字段请填写 App 管理员帐号。
ERR_SVR_COMM_SDKAPPID_FREQ_LIMIT = 60011, ///< SDKAppID 请求频率超限,请降低请求频率。
ERR_SVR_COMM_SDKAPPID_MISS = 60012, ///< REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID。
ERR_SVR_COMM_RSP_JSON_PARSE_FAILED = 60013, ///< HTTP 响应包 JSON 解析错误。
ERR_SVR_COMM_EXCHANGE_ACCOUNT_TIMEUT = 60014, ///< 置换帐号超时。
ERR_SVR_COMM_INVALID_ID_FORMAT = 60015, ///< 请求包体 Identifier 类型错误,请确认 Identifier 为字符串格式。
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) 联系客服确认。
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) 联系客服确认。
ERR_SVR_COMM_REQ_FREQ_LIMIT = 60018, ///< 请求过于频繁,请稍后重试。
ERR_SVR_COMM_REQ_FREQ_LIMIT_EX = 60019, ///< 请求过于频繁,请稍后重试。
ERR_SVR_COMM_INVALID_SERVICE = 60020, ///< 未购买套餐包或购买的套餐包正在配置中暂未生效,请五分钟后再次尝试。
ERR_SVR_COMM_SENSITIVE_TEXT = 80001, ///< 文本安全打击,文本中可能包含敏感词汇。
ERR_SVR_COMM_BODY_SIZE_LIMIT = 80002, ///< 发消息包体过长,目前支持最大8k消息包体长度,请减少包体大小重试。
// 帐号错误码
ERR_SVR_ACCOUNT_USERSIG_EXPIRED = 70001, ///< UserSig 已过期,请重新生成 UserSig,建议 UserSig 有效期不小于24小时。
ERR_SVR_ACCOUNT_USERSIG_EMPTY = 70002, ///< UserSig 长度为0,请检查传入的 UserSig 是否正确。
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED = 70003, ///< UserSig 校验失败,请确认下 UserSig 内容是否被截断,如缓冲区长度不够导致的内容截断。
ERR_SVR_ACCOUNT_USERSIG_CHECK_FAILED_EX = 70005, ///< UserSig 校验失败,可用工具自行验证生成的 UserSig 是否正确。
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_PUBLICKEY = 70009, ///< 用公钥验证 UserSig 失败,请确认生成的 UserSig 使用的私钥和 SDKAppID 是否对应。
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_ID = 70013, ///< 请求的 Identifier 与生成 UserSig 的 Identifier 不匹配。
ERR_SVR_ACCOUNT_USERSIG_MISMATCH_SDKAPPID = 70014, ///< 请求的 SDKAppID 与生成 UserSig 的 SDKAppID 不匹配。
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) 。
ERR_SVR_ACCOUNT_SDKAPPID_NOT_FOUND = 70020, ///< SDKAppID 未找到,请在云通信 IM 控制台确认应用信息。
ERR_SVR_ACCOUNT_INVALID_USERSIG = 70052, ///< UserSig 已经失效,请重新生成,再次尝试。
ERR_SVR_ACCOUNT_NOT_FOUND = 70107, ///< 请求的用户帐号不存在。
ERR_SVR_ACCOUNT_SEC_RSTR = 70114, ///< 安全原因被限制。
ERR_SVR_ACCOUNT_INTERNAL_TIMEOUT = 70169, ///< 服务端内部超时,请重试。
ERR_SVR_ACCOUNT_INVALID_COUNT = 70206, ///< 请求中批量数量不合法。
ERR_SVR_ACCOUNT_INVALID_PARAMETERS = 70402, ///< 参数非法,请检查必填字段是否填充,或者字段的填充是否满足协议要求。
ERR_SVR_ACCOUNT_ADMIN_REQUIRED = 70403, ///< 请求需要 App 管理员权限。
ERR_SVR_ACCOUNT_FREQ_LIMIT = 70050, ///< 因失败且重试次数过多导致被限制,请检查 UserSig 是否正确,一分钟之后再试。
ERR_SVR_ACCOUNT_BLACKLIST = 70051, ///< 帐号被拉入黑名单。
ERR_SVR_ACCOUNT_COUNT_LIMIT = 70398, ///< 创建帐号数量超过免费体验版数量限制,请升级为专业版。
ERR_SVR_ACCOUNT_INTERNAL_ERROR = 70500, ///< 服务端内部错误,请重试。
// 资料错误码
ERR_SVR_PROFILE_INVALID_PARAMETERS = 40001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
ERR_SVR_PROFILE_ACCOUNT_MISS = 40002, ///< 请求参数错误,没有指定需要拉取资料的用户帐号。
ERR_SVR_PROFILE_ACCOUNT_NOT_FOUND = 40003, ///< 请求的用户帐号不存在。
ERR_SVR_PROFILE_ADMIN_REQUIRED = 40004, ///< 请求需要 App 管理员权限。
ERR_SVR_PROFILE_SENSITIVE_TEXT = 40005, ///< 资料字段中包含敏感词。
ERR_SVR_PROFILE_INTERNAL_ERROR = 40006, ///< 服务端内部错误,请稍后重试。
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) 。
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) 。
ERR_SVR_PROFILE_TAG_NOT_FOUND = 40009, ///< 资料字段的 Tag 不存在。
ERR_SVR_PROFILE_SIZE_LIMIT = 40601, ///< 资料字段的 Value 长度超过500字节。
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) 。
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) 。
// 关系链错误码
ERR_SVR_FRIENDSHIP_INVALID_PARAMETERS = 30001, ///< 请求参数错误,请根据错误描述检查请求是否正确。
ERR_SVR_FRIENDSHIP_INVALID_SDKAPPID = 30002, ///< SDKAppID 不匹配。
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND = 30003, ///< 请求的用户帐号不存在。
ERR_SVR_FRIENDSHIP_ADMIN_REQUIRED = 30004, ///< 请求需要 App 管理员权限。
ERR_SVR_FRIENDSHIP_SENSITIVE_TEXT = 30005, ///< 关系链字段中包含敏感词。
ERR_SVR_FRIENDSHIP_INTERNAL_ERROR = 30006, ///< 服务端内部错误,请重试。
ERR_SVR_FRIENDSHIP_NET_TIMEOUT = 30007, ///< 网络超时,请稍后重试。
ERR_SVR_FRIENDSHIP_WRITE_CONFLICT = 30008, ///< 并发写导致写冲突,建议使用批量方式。
ERR_SVR_FRIENDSHIP_ADD_FRIEND_DENY = 30009, ///< 后台禁止该用户发起加好友请求。
ERR_SVR_FRIENDSHIP_COUNT_LIMIT = 30010, ///< 自己的好友数已达系统上限。
ERR_SVR_FRIENDSHIP_GROUP_COUNT_LIMIT = 30011, ///< 分组已达系统上限。
ERR_SVR_FRIENDSHIP_PENDENCY_LIMIT = 30012, ///< 未决数已达系统上限。
ERR_SVR_FRIENDSHIP_BLACKLIST_LIMIT = 30013, ///< 黑名单数已达系统上限。
ERR_SVR_FRIENDSHIP_PEER_FRIEND_LIMIT = 30014, ///< 对方的好友数已达系统上限。
ERR_SVR_FRIENDSHIP_IN_SELF_BLACKLIST = 30515, ///< 请求添加好友时,对方在自己的黑名单中,不允许加好友。
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_DENY_ANY = 30516, ///< 请求添加好友时,对方的加好友验证方式是不允许任何人添加自己为好友。
ERR_SVR_FRIENDSHIP_IN_PEER_BLACKLIST = 30525, ///< 请求添加好友时,自己在对方的黑名单中,不允许加好友。
ERR_SVR_FRIENDSHIP_ALLOW_TYPE_NEED_CONFIRM = 30539, ///< A 请求加 B 为好友,B 的加好友验证方式被设置为“AllowType_Type_NeedConfirm”,这时 A 与 B 之间只能形成未决关系,该返回码用于标识加未决成功,以便与加好友成功的返回码区分开,调用方可以捕捉该错误给用户一个合理的提示。
ERR_SVR_FRIENDSHIP_ADD_FRIEND_SEC_RSTR = 30540, ///< 添加好友请求被安全策略打击,请勿频繁发起添加好友请求。
ERR_SVR_FRIENDSHIP_PENDENCY_NOT_FOUND = 30614, ///< 请求的未决不存在。
ERR_SVR_FRIENDSHIP_DEL_NONFRIEND = 31704, ///< 与请求删除的帐号之间不存在好友关系。
ERR_SVR_FRIENDSHIP_DEL_FRIEND_SEC_RSTR = 31707, ///< 删除好友请求被安全策略打击,请勿频繁发起删除好友请求。
ERR_SVR_FRIENDSHIP_ACCOUNT_NOT_FOUND_EX = 31804, ///< 请求的用户帐号不存在。
// 最近联系人错误码
ERR_SVR_CONV_ACCOUNT_NOT_FOUND = 50001, ///< 请求的用户帐号不存在。
ERR_SVR_CONV_INVALID_PARAMETERS = 50002, ///< 请求参数错误,请根据错误描述检查请求是否正确。
ERR_SVR_CONV_ADMIN_REQUIRED = 50003, ///< 请求需要 App 管理员权限。
ERR_SVR_CONV_INTERNAL_ERROR = 50004, ///< 服务端内部错误,请重试。
ERR_SVR_CONV_NET_TIMEOUT = 50005, ///< 网络超时,请稍后重试。
// 消息错误码
ERR_SVR_MSG_PKG_PARSE_FAILED = 20001, ///< 请求包非法,请检查发送方和接收方帐号是否存在。
ERR_SVR_MSG_INTERNAL_AUTH_FAILED = 20002, ///< 内部鉴权失败。
ERR_SVR_MSG_INVALID_ID = 20003, ///< Identifier 无效或者 Identifier 未导入云通信 IM。
ERR_SVR_MSG_NET_ERROR = 20004, ///< 网络异常,请重试。
ERR_SVR_MSG_INTERNAL_ERROR1 = 20005, ///< 服务端内部错误,请重试。
ERR_SVR_MSG_PUSH_DENY = 20006, ///< 触发发送单聊消息之前回调,App 后台返回禁止下发该消息。
ERR_SVR_MSG_IN_PEER_BLACKLIST = 20007, ///< 发送单聊消息,被对方拉黑,禁止发送。
ERR_SVR_MSG_BOTH_NOT_FRIEND = 20009, ///< 消息发送双方互相不是好友,禁止发送(配置单聊消息校验好友关系才会出现)。
ERR_SVR_MSG_NOT_PEER_FRIEND = 20010, ///< 发送单聊消息,自己不是对方的好友(单向关系),禁止发送。
ERR_SVR_MSG_NOT_SELF_FRIEND = 20011, ///< 发送单聊消息,对方不是自己的好友(单向关系),禁止发送。
ERR_SVR_MSG_SHUTUP_DENY = 20012, ///< 因禁言,禁止发送消息。
ERR_SVR_MSG_REVOKE_TIME_LIMIT = 20016, ///< 消息撤回超过了时间限制(默认2分钟)。
ERR_SVR_MSG_DEL_RAMBLE_INTERNAL_ERROR = 20018, ///< 删除漫游内部错误。
ERR_SVR_MSG_JSON_PARSE_FAILED = 90001, ///< JSON 格式解析失败,请检查请求包是否符合 JSON 规范。
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) 的定义。
ERR_SVR_MSG_INVALID_TO_ACCOUNT = 90003, ///< JSON 格式请求包体中缺少 To_Account 字段或者 To_Account 字段不是 Integer 类型
ERR_SVR_MSG_INVALID_RAND = 90005, ///< JSON 格式请求包体中缺少 MsgRandom 字段或者 MsgRandom 字段不是 Integer 类型
ERR_SVR_MSG_INVALID_TIMESTAMP = 90006, ///< JSON 格式请求包体中缺少 MsgTimeStamp 字段或者 MsgTimeStamp 字段不是 Integer 类型
ERR_SVR_MSG_BODY_NOT_ARRAY = 90007, ///< JSON 格式请求包体中 MsgBody 类型不是 Array 类型,请将其修改为 Array 类型
ERR_SVR_MSG_ADMIN_REQUIRED = 90009, ///< 请求需要 App 管理员权限。
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) 的定义。
ERR_SVR_MSG_TO_ACCOUNT_COUNT_LIMIT = 90011, ///< 批量发消息目标帐号超过500,请减少 To_Account 中目标帐号数量。
ERR_SVR_MSG_TO_ACCOUNT_NOT_FOUND = 90012, ///< To_Account 没有注册或不存在,请确认 To_Account 是否导入云通信 IM 或者是否拼写错误。
ERR_SVR_MSG_TIME_LIMIT = 90026, ///< 消息离线存储时间错误(最多不能超过7天)。
ERR_SVR_MSG_INVALID_SYNCOTHERMACHINE = 90031, ///< JSON 格式请求包体中 SyncOtherMachine 字段不是 Integer 类型
ERR_SVR_MSG_INVALID_MSGLIFETIME = 90044, ///< JSON 格式请求包体中 MsgLifeTime 字段不是 Integer 类型
ERR_SVR_MSG_ACCOUNT_NOT_FOUND = 90048, ///< 请求的用户帐号不存在。
ERR_SVR_MSG_INTERNAL_ERROR2 = 90994, ///< 服务内部错误,请重试。
ERR_SVR_MSG_INTERNAL_ERROR3 = 90995, ///< 服务内部错误,请重试。
ERR_SVR_MSG_INTERNAL_ERROR4 = 91000, ///< 服务内部错误,请重试。
ERR_SVR_MSG_INTERNAL_ERROR5 = 90992, ///< 服务内部错误,请重试;如果所有请求都返回该错误码,且 App 配置了第三方回调,请检查 App 服务端是否正常向云通信 IM 后台服务端返回回调结果。
ERR_SVR_MSG_BODY_SIZE_LIMIT = 93000, ///< JSON 数据包超长,消息包体请不要超过8k。
ERR_SVR_MSG_LONGPOLLING_COUNT_LIMIT = 91101, ///< Web 端长轮询被踢(Web 端同时在线实例个数超出限制)。
// 120001 - 130000, ///< 单聊第三方回调返回的自定义错误码。
// 群组错误码
ERR_SVR_GROUP_INTERNAL_ERROR = 10002, ///< 服务端内部错误,请重试。
ERR_SVR_GROUP_API_NAME_ERROR = 10003, ///< 请求中的接口名称错误,请核对接口名称并重试。
ERR_SVR_GROUP_INVALID_PARAMETERS = 10004, ///< 参数非法,请根据错误描述检查请求是否正确。
ERR_SVR_GROUP_ACOUNT_COUNT_LIMIT = 10005, ///< 请求包体中携带的帐号数量过多。
ERR_SVR_GROUP_FREQ_LIMIT = 10006, ///< 操作频率限制,请尝试降低调用的频率。
ERR_SVR_GROUP_PERMISSION_DENY = 10007, ///< 操作权限不足,比如 Public 群组中普通成员尝试执行踢人操作,但只有 App 管理员才有权限。
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) 联系技术客服。
ERR_SVR_GROUP_SUPER_NOT_ALLOW_QUIT = 10009, ///< 该群不允许群主主动退出。
ERR_SVR_GROUP_NOT_FOUND = 10010, ///< 群组不存在,或者曾经存在过,但是目前已经被解散。
ERR_SVR_GROUP_JSON_PARSE_FAILED = 10011, ///< 解析 JSON 包体失败,请检查包体的格式是否符合 JSON 格式。
ERR_SVR_GROUP_INVALID_ID = 10012, ///< 发起操作的 Identifier 非法,请检查发起操作的用户 Identifier 是否填写正确。
ERR_SVR_GROUP_ALLREADY_MEMBER = 10013, ///< 被邀请加入的用户已经是群成员。
ERR_SVR_GROUP_FULL_MEMBER_COUNT = 10014, ///< 群已满员,无法将请求中的用户加入群组,如果是批量加人,可以尝试减少加入用户的数量。
ERR_SVR_GROUP_INVALID_GROUPID = 10015, ///< 群组 ID 非法,请检查群组 ID 是否填写正确。
ERR_SVR_GROUP_REJECT_FROM_THIRDPARTY = 10016, ///< App 后台通过第三方回调拒绝本次操作。
ERR_SVR_GROUP_SHUTUP_DENY = 10017, ///< 因被禁言而不能发送消息,请检查发送者是否被设置禁言。
ERR_SVR_GROUP_RSP_SIZE_LIMIT = 10018, ///< 应答包长度超过最大包长(1MB),请求的内容过多,请尝试减少单次请求的数据量。
ERR_SVR_GROUP_ACCOUNT_NOT_FOUND = 10019, ///< 请求的用户帐号不存在。
ERR_SVR_GROUP_GROUPID_IN_USED = 10021, ///< 群组 ID 已被使用,请选择其他的群组 ID。
ERR_SVR_GROUP_SEND_MSG_FREQ_LIMIT = 10023, ///< 发消息的频率超限,请延长两次发消息时间的间隔。
ERR_SVR_GROUP_REQ_ALLREADY_BEEN_PROCESSED = 10024, ///< 此邀请或者申请请求已经被处理。
ERR_SVR_GROUP_GROUPID_IN_USED_FOR_SUPER = 10025, ///< 群组 ID 已被使用,并且操作者为群主,可以直接使用。
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) 联系客服。
ERR_SVR_GROUP_REVOKE_MSG_NOT_FOUND = 10030, ///< 请求撤回的消息不存在。
ERR_SVR_GROUP_REVOKE_MSG_TIME_LIMIT = 10031, ///< 消息撤回超过了时间限制(默认2分钟)。
ERR_SVR_GROUP_REVOKE_MSG_DENY = 10032, ///< 请求撤回的消息不支持撤回操作。
ERR_SVR_GROUP_NOT_ALLOW_REVOKE_MSG = 10033, ///< 群组类型不支持消息撤回操作。
ERR_SVR_GROUP_REMOVE_MSG_DENY = 10034, ///< 该消息类型不支持删除操作。
ERR_SVR_GROUP_NOT_ALLOW_REMOVE_MSG = 10035, ///< 音视频聊天室和在线成员广播大群不支持删除消息。
ERR_SVR_GROUP_AVCHATROOM_COUNT_LIMIT = 10036, ///< 音视频聊天室创建数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买预付费套餐“IM音视频聊天室”。
ERR_SVR_GROUP_COUNT_LIMIT = 10037, ///< 单个用户可创建和加入的群组数量超过了限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“单人可创建与加入群组数”。
ERR_SVR_GROUP_MEMBER_COUNT_LIMIT = 10038, ///< 群成员数量超过限制,请参考 [价格说明](https://cloud.tencent.com/document/product/269/11673) 购买或升级预付费套餐“扩展群人数上限”。
/////////////////////////////////////////////////////////////////////////////////
//
// (三)IM SDK V3 版本的错误码
//
/////////////////////////////////////////////////////////////////////////////////
ERR_NO_SUCC_RESULT = 6003, ///< 批量操作无成功结果。
ERR_TO_USER_INVALID = 6011, ///< 无效接收方。
ERR_REQUEST_TIMEOUT = 6012, ///< 请求超时。
ERR_INIT_CORE_FAIL = 6018, ///< INIT CORE 模块失败。
ERR_EXPIRED_SESSION_NODE = 6020, ///< SessionNode 为 null 。
ERR_LOGGED_OUT_BEFORE_LOGIN_FINISHED = 6023, ///< 在登录完成前进行了登出(在登录时返回)。
ERR_TLSSDK_NOT_INITIALIZED = 6024, ///< TLS SDK 未初始化。
ERR_TLSSDK_USER_NOT_FOUND = 6025, ///< TLS SDK 没有找到相应的用户信息。
ERR_BIND_FAIL_UNKNOWN = 6100, ///< QALSDK 未知原因BIND失败。
ERR_BIND_FAIL_NO_SSOTICKET = 6101, ///< 缺少 SSO 票据。
ERR_BIND_FAIL_REPEATD_BIND = 6102, ///< 重复 BIND。
ERR_BIND_FAIL_TINYID_NULL = 6103, ///< TinyId 为空。
ERR_BIND_FAIL_GUID_NULL = 6104, ///< GUID 为空。
ERR_BIND_FAIL_UNPACK_REGPACK_FAILED = 6105, ///< 解注册包失败。
ERR_BIND_FAIL_REG_TIMEOUT = 6106, ///< 注册超时。
ERR_BIND_FAIL_ISBINDING = 6107, ///< 正在 BIND 操作中。
ERR_PACKET_FAIL_UNKNOWN = 6120, ///< 发包未知错误。
ERR_PACKET_FAIL_REQ_NO_NET = 6121, ///< 发送请求包时没有网络。
ERR_PACKET_FAIL_RESP_NO_NET = 6122, ///< 发送回复包时没有网络。
ERR_PACKET_FAIL_REQ_NO_AUTH = 6123, ///< 发送请求包时没有权限。
ERR_PACKET_FAIL_SSO_ERR = 6124, ///< SSO 错误。
ERR_PACKET_FAIL_REQ_TIMEOUT = 6125, ///< 请求超时。
ERR_PACKET_FAIL_RESP_TIMEOUT = 6126, ///< 回复超时。
ERR_PACKET_FAIL_REQ_ON_RESEND = 6127, ///< 重发失败。
ERR_PACKET_FAIL_RESP_NO_RESEND = 6128, ///< 重发时没有真正发送。
ERR_PACKET_FAIL_FLOW_SAVE_FILTERED = 6129, ///< 保存被过滤。
ERR_PACKET_FAIL_REQ_OVER_LOAD = 6130, ///< 发送过载。
ERR_PACKET_FAIL_LOGIC_ERR = 6131, ///< 数据逻辑错误。
ERR_FRIENDSHIP_PROXY_NOT_SYNCED = 6150, ///< proxy_manager 没有完成服务端数据同步。
ERR_FRIENDSHIP_PROXY_SYNCING = 6151, ///< proxy_manager 正在进行服务端数据同步。
ERR_FRIENDSHIP_PROXY_SYNCED_FAIL = 6152, ///< proxy_manager 同步失败。
ERR_FRIENDSHIP_PROXY_LOCAL_CHECK_ERR = 6153, ///< proxy_manager 请求参数,在本地检查不合法。
ERR_GROUP_INVALID_FIELD = 6160, ///< Group assistant 请求字段中包含非预设字段。
ERR_GROUP_STORAGE_DISABLED = 6161, ///< Group assistant 群资料本地存储没有开启。
ERR_LOADGRPINFO_FAILED = 6162, ///< 加载群资料失败。
ERR_REQ_NO_NET_ON_REQ = 6200, ///< 请求的时候没有网络。
ERR_REQ_NO_NET_ON_RSP = 6201, ///< 响应的时候没有网络。
ERR_SERIVCE_NOT_READY = 6205, ///< QALSDK 服务未就绪。
ERR_LOGIN_AUTH_FAILED = 6207, ///< 账号认证失败( TinyId 转换失败)。
ERR_NEVER_CONNECT_AFTER_LAUNCH = 6209, ///< 在应用启动后没有尝试联网。
ERR_REQ_FAILED = 6210, ///< QALSDK 执行失败。
ERR_REQ_INVALID_REQ = 6211, ///< 请求非法,toMsgService 非法。
ERR_REQ_OVERLOADED = 6212, ///< 请求队列满。
ERR_REQ_KICK_OFF = 6213, ///< 已经被其他终端踢了。
ERR_REQ_SERVICE_SUSPEND = 6214, ///< 服务被暂停。
ERR_REQ_INVALID_SIGN = 6215, ///< SSO 签名错误。
ERR_REQ_INVALID_COOKIE = 6216, ///< SSO cookie 无效。
ERR_LOGIN_TLS_RSP_PARSE_FAILED = 6217, ///< 登录时 TLS SDK 回包校验,包体长度错误。
ERR_LOGIN_OPENMSG_TIMEOUT = 6218, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态超时。
ERR_LOGIN_OPENMSG_RSP_PARSE_FAILED = 6219, ///< 登录时 OPENSTATSVC 向 OPENMSG 上报状态时解析回包失败。
ERR_LOGIN_TLS_DECRYPT_FAILED = 6220, ///< 登录时 TLS SDK 解密失败。
ERR_WIFI_NEED_AUTH = 6221, ///< WIFI 需要认证。
ERR_USER_CANCELED = 6222, ///< 用户已取消。
ERR_REVOKE_TIME_LIMIT_EXCEED = 6223, ///< 消息撤回超过了时间限制(默认2分钟)。
ERR_LACK_UGC_EXT = 6224, ///< 缺少 UGC 扩展包。
ERR_AUTOLOGIN_NEED_USERSIG = 6226, ///< 自动登录,本地票据过期,需要 UserSig 手动登录。
ERR_QAL_NO_SHORT_CONN_AVAILABLE = 6300, ///< 没有可用的短连接 SSO 。
ERR_REQ_CONTENT_ATTACK = 80101, ///< 消息内容安全打击。
ERR_LOGIN_SIG_EXPIRE = 70101, ///< 登录返回,票据过期。
ERR_SDK_HAD_INITIALIZED = 90101, ///< IM SDK 已经初始化无需重复初始化。
ERR_OPENBDH_BASE = 115000, ///< OpenBDH 错误码基。
ERR_REQUEST_NO_NET_ONREQ = 6250, ///< 请求时没有网络,请等网络恢复后重试。
ERR_REQUEST_NO_NET_ONRSP = 6251, ///< 响应时没有网络,请等网络恢复后重试。
ERR_REQUEST_FAILED = 6252, ///< QALSDK 执行失败。
ERR_REQUEST_INVALID_REQ = 6253, ///< 请求非法,toMsgService 非法。
ERR_REQUEST_OVERLOADED = 6254, ///< 请求队列満。
ERR_REQUEST_KICK_OFF = 6255, ///< 已经被其他终端踢了。
ERR_REQUEST_SERVICE_SUSPEND = 6256, ///< 服务被暂停。
ERR_REQUEST_INVALID_SIGN = 6257, ///< SSO 签名错误。
ERR_REQUEST_INVALID_COOKIE = 6258, ///< SSO cookie 无效。
};
#endif /* TIMErrorCode_h */
... ...
... ... @@ -11,7 +11,6 @@
#import "ImSDK.h"
@class TIMFriendMetaInfo;
@class TIMFriendPendencyResponse;
@class TIMFriendPendencyItem;
@class TIMFriendFutureMeta;
... ... @@ -21,104 +20,119 @@
/**
* 好友操作状态
*
* 详细错误码参见 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
*/
typedef NS_ENUM(NSInteger, TIMFriendStatus) {
/**
* 操作成功
*/
TIM_FRIEND_STATUS_SUCC = 0,
/**
* 加好友、响应好友时有效:自己的好友数已达系统上限
* 请求参数错误,请根据错误描述检查请求是否正确
*/
TIM_ADD_FRIEND_STATUS_SELF_FRIEND_FULL = 30010,
TIM_FRIEND_PARAM_INVALID = 30001,
/**
* 更新好友分组时有效:分组已达系统上限
* 请求参数错误,SdkAppid 不匹配。
*/
TIM_UPDATE_FRIEND_GROUP_STATUS_MAX_GROUPS_EXCEED = 30011,
TIM_FRIEND_SDK_APPID_INVALID = 30002,
/**
* 加好友、响应好友时有效:对方的好友数已达系统上限
* 请求的用户帐号不存在
*/
TIM_ADD_FRIEND_STATUS_THEIR_FRIEND_FULL = 30014,
TIM_FRIEND_ID_INVALID = 30003,
/**
* 加好友时有效:被加好友在自己的黑名单中
* 请求需要 App 管理员权限
*/
TIM_ADD_FRIEND_STATUS_IN_SELF_BLACK_LIST = 30515,
TIM_FRIEND_NEED_ADMIN_PERMISSON = 30004,
/**
* 加好友时有效:被加好友设置为禁止加好友
* 关系链字段中包含敏感词
*/
TIM_ADD_FRIEND_STATUS_FRIEND_SIDE_FORBID_ADD = 30516,
TIM_FRIEND_DIRTY_WORD = 30005,
/**
* 加好友时有效:已被被添加好友设置为黑名单
* 服务器内部错误,请重试
*/
TIM_ADD_FRIEND_STATUS_IN_OTHER_SIDE_BLACK_LIST = 30525,
TIM_FRIEND_SERVER_ERROR = 30006,
/**
* 加好友时有效:对方好友列表已满
* 网络超时,请稍后重试
*/
TIM_ADD_FRIEND_STATUS_OTHER_SIDE_FRIEND_LIST_FULL = 30535,
TIM_FRIEND_TIMEOUT = 30007,
/**
* 加好友时有效:等待好友审核同意
* 并发写导致写冲突,建议使用批量方式
*/
TIM_ADD_FRIEND_STATUS_PENDING = 30539,
TIM_FRIEND_WRITE_ERROR = 30008,
/**
* 后台禁止该用户发起加好友请求
*/
TIM_ADD_FRIEND_FORBIDEN = 30009,
/**
* 删除好友时有效:删除好友时对方不是好友
* 自己的好友数已达系统上限
*/
TIM_DEL_FRIEND_STATUS_NO_FRIEND = 31704,
TIM_ADD_FRIEND_STATUS_SELF_FRIEND_FULL = 30010,
/**
* 响应好友申请时有效:对方没有申请过好友
* 分组已达系统上限
*/
TIM_RESPONSE_FRIEND_STATUS_NO_REQ = 30614,
TIM_UPDATE_FRIEND_GROUP_STATUS_MAX_GROUPS_EXCEED = 30011,
/**
* 未决数已达系统上限。
*/
TIM_PENDENCY_STATUS_FULL = 30012,
/**
* 黑名单数已达系统上限
*/
TIM_ADD_BLACKLIST_STATUS_FULL = 30013,
/**
* 添加黑名单有效:已经在黑名单了
* 对方的好友数已达系统上限
*/
TIM_ADD_BLACKLIST_FRIEND_STATUS_IN_BLACK_LIST = 31307,
TIM_ADD_FRIEND_STATUS_THEIR_FRIEND_FULL = 30014,
/**
* 删除黑名单有效:用户不在黑名单里
* 被加好友在自己的黑名单中
*/
TIM_DEL_BLACKLIST_FRIEND_STATUS_NOT_IN_BLACK_LIST = 31503,
TIM_ADD_FRIEND_STATUS_IN_SELF_BLACK_LIST = 30515,
/**
* 创建好友分组时有效:没有拉到SDKAppId
* 被加好友设置为禁止加好友
*/
TIM_ADD_FRIEND_GROUP_STATUS_GET_SDKAPPID_FAILED = 32207,
TIM_ADD_FRIEND_STATUS_FRIEND_SIDE_FORBID_ADD = 30516,
/**
* 创建好友分组时有效:要加入到好友分组中的用户不是好友
* 已被被添加好友设置为黑名单
*/
TIM_ADD_FRIEND_GROUP_STATUS_NOT_FRIEND = 32216,
TIM_ADD_FRIEND_STATUS_IN_OTHER_SIDE_BLACK_LIST = 30525,
/**
* 更新好友分组时有效:没有拉到SDKAppId
* 等待好友审核同意
*/
TIM_UPDATE_FRIEND_GROUP_STATUS_GET_SDKAPPID_FAILED = 32511,
TIM_ADD_FRIEND_STATUS_PENDING = 30539,
/**
* 更新好友分组时有效:要加入到好友分组中的用户不是好友
* 添加好友请求被安全策略打击,请勿频繁发起添加好友请求
*/
TIM_UPDATE_FRIEND_GROUP_STATUS_ADD_NOT_FRIEND = 32518,
TIM_ADD_FRIEND_STATUS_SENSITIVE = 30540,
/**
* 更新好友分组时有效:要加入到好友分组中的好友已经在分组中
* 对方没有申请过好友
*/
TIM_UPDATE_FRIEND_GROUP_STATUS_ADD_ALREADY_IN_GROUP = 32519,
TIM_RESPONSE_FRIEND_STATUS_NO_REQ = 30614,
/**
* 更新好友分组时有效:要从好友分组中删除的好友不在好友分组中
* 删除好友请求被安全策略打击,请勿频繁发起删除好友请求
*/
TIM_UPDATE_FRIEND_GROUP_STATUS_DEL_NOT_IN_GROUP = 32520,
TIM_DELETE_FRIEND_STATUS_SENSITIVE = 31707,
};
typedef NS_ENUM(NSInteger, TIMDelFriendType) {
... ... @@ -126,7 +140,7 @@ typedef NS_ENUM(NSInteger, TIMDelFriendType) {
* 删除单向好友
*/
TIM_FRIEND_DEL_SINGLE = 1,
/**
* 删除双向好友
*/
... ... @@ -138,12 +152,12 @@ typedef NS_ENUM(NSInteger, TIMPendencyType) {
* 别人发给我的
*/
TIM_PENDENCY_COME_IN = 1,
/**
* 我发给别人的
*/
TIM_PENDENCY_SEND_OUT = 2,
/**
* 别人发给我的 和 我发给别人的。仅拉取时有效
*/
... ... @@ -158,17 +172,17 @@ typedef NS_ENUM(NSInteger, TIMFutureFriendType) {
* 收到的未决请求
*/
TIM_FUTURE_FRIEND_PENDENCY_IN_TYPE = 0x1,
/**
* 发出去的未决请求
*/
TIM_FUTURE_FRIEND_PENDENCY_OUT_TYPE = 0x2,
/**
* 推荐好友
*/
TIM_FUTURE_FRIEND_RECOMMEND_TYPE = 0x4,
/**
* 已决好友
*/
... ... @@ -183,7 +197,7 @@ typedef NS_ENUM(NSInteger, TIMPageDirectionType) {
* 向上翻页
*/
TIM_PAGE_DIRECTION_UP_TYPE = 1,
/**
* 向下翻页
*/
... ... @@ -223,7 +237,7 @@ typedef NS_ENUM(NSInteger,TIMFriendRelationType) {
/**
* 互为好友
*/
TIM_FRIEND_RELATION_TYPE_BOTH = 0x3,
TIM_FRIEND_RELATION_TYPE_BOTHWAY = 0x3,
};
typedef NS_ENUM(NSInteger, TIMFriendResponseType) {
... ... @@ -231,27 +245,32 @@ typedef NS_ENUM(NSInteger, TIMFriendResponseType) {
* 同意加好友(建立单向好友)
*/
TIM_FRIEND_RESPONSE_AGREE = 0,
/**
* 同意加好友并加对方为好友(建立双向好友)
*/
TIM_FRIEND_RESPONSE_AGREE_AND_ADD = 1,
/**
* 拒绝对方好友请求
*/
TIM_FRIEND_RESPONSE_REJECT = 2,
};
#pragma mark - block回调
/**
* 获取好友列表回调
*
* @param meta 好友元信息
* @param friends 好友列表 TIMUserProfile* 数组,只包含需要的字段
* 好友检查类型
*/
typedef void (^TIMGetFriendListByPageSucc)(TIMFriendMetaInfo * meta, NSArray * friends);
typedef NS_ENUM(NSInteger,TIMFriendAddType) {
/**
* 单向好友
*/
TIM_FRIEND_ADD_TYPE_SINGLE = 1,
/**
* 互为好友
*/
TIM_FRIEND_ADD_TYPE_BOTH = 2,
};
#pragma mark - block回调
/**
* 获取未决请求列表成功
... ... @@ -315,6 +334,11 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
*/
@property (nonatomic,strong) NSString* group;
/**
* 加好友方式 (可选)
*/
@property (nonatomic,assign) TIMFriendAddType addType;
@end
/**
... ... @@ -393,7 +417,8 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
@property(nonatomic,assign) uint64_t timestamp;
/**
* 每页的数量,即本次请求最多返回都个数据
* 每页的数量,即本次请求最多返回多个数据,最大不超过 100,设置太大一次请求回包的时间会过长。默认值100
* 注意:后台最多只保存100条未决
*/
@property(nonatomic,assign) uint64_t numPerPage;
... ... @@ -431,32 +456,6 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
@end
/**
* 好友元信息
*/
@interface TIMFriendMetaInfo : TIMCodingModel
/**
* 时间戳,需要保存,下次拉取时传入,增量更新使用
*/
@property(nonatomic,assign) uint64_t timestamp;
/**
* 序列号,需要保存,下次拉取时传入,增量更新使用
*/
@property(nonatomic,assign) uint64_t infoSeq;
/**
* 分页信息,无需保存,返回为0时结束,非0时传入再次拉取,第一次拉取时传0
*/
@property(nonatomic,assign) uint64_t nextSeq;
/**
* 覆盖:为TRUE时需要重设timestamp, infoSeq, nextSeq为0,清除客户端存储,重新拉取资料
*/
@property(nonatomic,assign) BOOL recover;
@end
/**
* 好友分组信息
*/
... ... @@ -498,11 +497,18 @@ typedef void (^TIMFriendCheckSucc)(NSArray* results);
/**
* 用户id
*/
@property(nonatomic,strong) NSString* identifier;
@property NSString* identifier;
/**
* 返回码
*/
@property NSInteger result_code;
/**
* 返回状态
* 返回信息
*/
@property(nonatomic,assign) TIMFriendStatus status;
@property NSString *result_info;
/**
* 检查结果
*/
... ...
... ... @@ -42,6 +42,13 @@
- (int)getSelfProfile:(TIMGetProfileSucc)succ fail:(TIMFail)fail;
/**
* 在缓存中查询自己的资料
*
* @return 返回缓存的资料,未找到返回nil
*/
- (TIMUserProfile *)querySelfProfile;
/**
* 获取指定用户资料
*
* @param identifiers 用户id,非好友的用户也可以
... ... @@ -54,6 +61,15 @@
- (int)getUsersProfile:(NSArray<NSString *> *)identifiers forceUpdate:(BOOL)forceUpdate succ:(TIMUserProfileArraySucc)succ fail:(TIMFail)fail;
/**
* 在缓存中查询用户的资料
*
* @praram identifier 用户id,非好友的用户也可以
*
* @return 返回缓存的资料,未找到返回nil
*/
- (TIMUserProfile *)queryUserProfile:(NSString *)identifier;
/**
* 获取好友列表
*
* @param succ 成功回调,返回好友(TIMFriend)列表
... ... @@ -65,6 +81,35 @@
/**
* 在缓存中查询用户的关系链数据
*
* @praram identifier 用户id
*
* @return 返回缓存的关系链数据,未找到返回nil
* @note 缓存数据来自于上一次调用getFriendList,请确保已调用了获取好友列表方法
*/
- (TIMFriend *)queryFriend:(NSString *)identifier;
/**
* 获取缓存中的关系链列表
*
* @return 返回缓存的关系链数据
* @note 缓存数据来自于上一次调用getFriendList,请确保已调用了获取好友列表方法
*/
- (NSArray<TIMFriend *> *)queryFriendList;
/**
* 检查指定用户的好友关系
*
* @param checkInfo 好友检查信息
* @param succ 成功回调,返回检查结果
* @param fail 失败回调
*
* @return 0:发送成功;-1:checkInfo->users 参数异常;-2:checkInfo->checkType 参数异常
*/
- (int)checkFriends:(TIMFriendCheckInfo *)checkInfo succ:(TIMCheckFriendResultArraySucc)succ fail:(TIMFail)fail;
/**
* 添加好友
*
* @param request 添加好友请求
... ... @@ -111,7 +156,7 @@
- (int)modifyFriend:(NSString *)identifier values:(NSDictionary<NSString *, id> *)values succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 未决列表请求
* 获取未决列表
*
* @param pendencyRequest 请求信息,详细参考TIMFriendPendencyRequest
* @param succ 成功回调
... ...
//
// TIMGroupManager+Ext.h
// IMGroupExt
//
// Created by tomzhu on 2017/2/9.
//
//
#ifndef TIMGroupManager_Ext_h
#define TIMGroupManager_Ext_h
#import "TIMGroupManager.h"
#import "TIMComm+Group.h"
@interface TIMGroupManager (Ext)
/**
* 创建私有群
*
* 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createPrivateGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建公开群
*
* 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*get
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createPublicGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建聊天室
*
* 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createChatRoomGroup:(NSArray*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建音视频聊天室(可支持超大群,详情可参考wiki文档)
*
* 创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createAVChatRoomGroup:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 创建自定义群组
*
* 在创建群组时,除了设置默认的成员以及群名外,还可以设置如群公告、群简介等字段。
*
* @param groupInfo 群组信息,详情请参考 TIMComm+Group.h 里面的 TIMCreateGroupInfo 定义
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createGroup:(TIMCreateGroupInfo*)groupInfo succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 邀请好友入群
*
* 1. 只有私有群可以拉用户入群。
* 2. 直播大群:不能邀请用户入群。
* 3. 不允许群成员邀请他人入群,但创建群时可以直接拉人入群。
*
* @param group 群组Id
* @param members 要加入的成员列表(NSString* 类型数组)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)inviteGroupMember:(NSString*)group members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 删除群成员
*
* 1. 私有群:只有创建者可删除群组成员。
* 2. 公开群、聊天室:只有管理员和群主可以踢人。
* 3. 对于直播大群:不能踢人。
*
* @param group 群组Id
* @param reason 删除原因
* @param members 要删除的成员列表
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)deleteGroupMemberWithReason:(NSString*)group reason:(NSString*)reason members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 获取群公开信息(暂未实现)
*
* 任意用户可以获取群公开资料,只能获取公开信息。
*
* @param groups 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupPublicInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 获取群列表
*
* 1. 可以获取自己所加入的群列表。
* 2. 只能获得加入的部分直播大群的列表。
*
* @param succ 成功回调,NSArray 列表为 TIMGroupInfo,结构体只包含 group\groupName\groupType\faceUrl\allShutup\selfInfo 信息
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupList:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 获取群信息
*
* 1. 获取群组资料接口只能由群成员调用,非群成员无法通过此方法获取资料,需要调用 getGroupPublicInfo 获取资料。
* 2. 默认拉取基本资料,如果想要拉取自定义字段,首先要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限,然后在 initSDK 的时候把生成的 key 设置在 IMGroupInfoOption 里面的 groupCustom 字段。需要注意的是,只有对自定义字段 value 做了赋值或则修改,才能拉取到自定义字段。
*
* @param succ 成功回调,不包含 selfInfo信息
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 获取本人在群组内的成员信息
*
* 默认拉取基本资料,如果想要拉取自定义字段,请参考 getGroupInfo
*
* @param group 群组Id
* @param succ 成功回调,返回信息
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupSelfInfo:(NSString*)group succ:(TIMGroupSelfSucc)succ fail:(TIMFail)fail;
/**
* 获取接受消息选项
*
* @param group 群组Id
* @param succ 成功回调, TIMGroupReceiveMessageOpt 0:接收消息;1:不接收消息,服务器不进行转发;2:接受消息,不进行 iOS APNs 推送
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getReciveMessageOpt:(NSString*)group succ:(TIMGroupReciveMessageOptSucc)succ fail:(TIMFail)fail;
/**
* 获取群成员列表
*
* 1. 获取群内成员列表,默认拉取内置字段,但不拉取自定义字段,如果想要拉取自定义字段,首先要通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限,然后在 initSDK 的时候把生成的 key 设置在 IMGroupInfoOption 里面的 groupCustom 字段。需要注意的是,只有对自定义字段的 value 做了赋值或则修改,才能拉取到自定义字段。
* 2. 任何群组类型:都可以获取成员列表。
* 3. 直播大群:只能拉取部分成员(包括群主、管理员和部分成员)。
*
* @param group 群组Id
* @param succ 成功回调(TIMGroupMemberInfo列表)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupMembers:(NSString*)group succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 获取群组指定成员的信息
*
* 获取群组指定成员的信息,需要设置群成员 members,其他限制参考 getGroupMembers
*
* @param group 群组Id
* @param members 成员Id(NSString*)列表
* @param succ 成功回调(TIMGroupMemberInfo列表)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupMembersInfo:(NSString*)group members:(NSArray*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 获取指定类型的成员列表(支持按字段拉取,分页)
*
* @param group 群组Id:(NSString*) 列表
* @param filter 群成员角色过滤方式
* @param flags 拉取资料标志
* @param custom 要获取的自定义key(NSString*)列表
* @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为0
* @param succ 成功回调
* @param fail 失败回调
* @return 0:成功;1:失败
*/
- (int)getGroupMembers:(NSString*)group ByFilter:(TIMGroupMemberFilter)filter flags:(TIMGetGroupMemInfoFlag)flags custom:(NSArray*)custom nextSeq:(uint64_t)nextSeq succ:(TIMGroupMemberSuccV2)succ fail:(TIMFail)fail;
/**
* 修改群名
*
* 1. 公开群、聊天室和直播大群:只有群主或者管理员可以修改群名。
* 2. 私有群:任何人可修改群名。
*
* @param group 群组Id
* @param groupName 新群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupName:(NSString*)group groupName:(NSString*)groupName succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群简介
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群简介。
* 2. 私有群:任何人可修改群简介。
*
* @param group 群组Id
* @param introduction 群简介(最长120字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupIntroduction:(NSString*)group introduction:(NSString*)introduction succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群公告
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群公告。
* 2. 私有群:任何人可修改群公告。
*
* @param group 群组Id
* @param notification 群公告(最长150字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupNotification:(NSString*)group notification:(NSString*)notification succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群头像
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群头像。
* 2. 私有群:任何人可修改群头像。
*
* @param group 群组Id
* @param url 群头像地址(最长100字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupFaceUrl:(NSString*)group url:(NSString*)url succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改加群选项
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改加群选项。
* 2. 私有群:只能通过邀请加入群组,不能主动申请加入某个群组。
*
* @param group 群组Id
* @param opt 加群选项,详见 TIMGroupAddOpt
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupAddOpt:(NSString*)group opt:(TIMGroupAddOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群自定义字段集合
*
* 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限。
*
* @param group 群组Id
* @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupCustomInfo:(NSString*)group customInfo:(NSDictionary*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 转让群给新群主
*
* 1. 只有群主才有权限进行群转让操作。
* 2. 直播大群不能进行群转让操作。
*
* @param group 群组Id
* @param identifier 新的群主Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupOwner:(NSString*)group user:(NSString*)identifier succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改接受消息选项
*
* 默认情况下,公开群和私有群是接收并离线推送群消息,聊天室和直播大群是接收但不离线推送群消息。
*
* @param group 群组Id
* @param opt 接受消息选项,详见 TIMGroupReceiveMessageOpt
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyReciveMessageOpt:(NSString*)group opt:(TIMGroupReceiveMessageOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群成员角色
*
* 1. 群主、管理员:可以进行对群成员的身份进行修改。
* 2. 直播大群:不支持修改用户群内身份。
*
* @param group 群组Id
* @param identifier 被修改角色的用户identifier
* @param role 角色(注意:不能修改为群主),详见 TIMGroupMemberRole
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetRole:(NSString*)group user:(NSString*)identifier role:(TIMGroupMemberRole)role succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 禁言用户
*
* 只有管理员或群主能够调用
*
* @param group 群组Id
* @param identifier 被禁言的用户identifier
* @param stime 禁言时间
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetSilence:(NSString*)group user:(NSString*)identifier stime:(uint32_t)stime succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群名片
*
* 只有本人、管理员或群主能够调用
*
* @param group 群组Id
* @param identifier 被操作用户identifier
* @param nameCard 群名片
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetNameCard:(NSString*)group user:(NSString*)identifier nameCard:(NSString*)nameCard succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群成员自定义字段集合
*
* 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段 配置相关的 key 和权限。
*
* @param group 群组 Id
* @param identifier 被操作用户 identifier
* @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetCustomInfo:(NSString*)group user:(NSString*)identifier customInfo:(NSDictionary*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群组是否可被搜索属性
*
* @param group 群组Id
* @param searchable 是否能被搜索
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupSearchable:(NSString*)group searchable:(BOOL)searchable succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群组成员是否可见属性
*
* @param group 群组Id
* @param visible 是否可见
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberVisible:(NSString*)group visible:(BOOL)visible succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 修改群组全员禁言属性
*
* 1. 群主、管理员:有权限进行全员禁言的操作。
* 2. 所有群组类型:都支持全员禁言的操作。
*
* @param group 群组Id
* @param shutup 是否禁言
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupAllShutup:(NSString*)group shutup:(BOOL)shutup succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取群组未决列表
*
* 1. 群未决消息泛指所有需要审批的群相关的操作(例如:加群待审批,拉人入群待审批等等)。即便审核通过或者拒绝后,该条信息也可通过此接口拉回,拉回的信息中有已决标志
* 2. 审批人:有权限拉取相关信息,如果 UserA 申请加入群 GroupA,则群管理员可获取此未决相关信息,UserA 因为没有审批权限,不需要拉取未决信息。如果 AdminA 拉 UserA 进去 GroupA,则 UserA 可以拉取此未决相关信息,因为该未决信息待 UserA 审批。
*
* @param option 未决参数配置
* @param succ 成功回调,返回未决列表
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getPendencyFromServer:(TIMGroupPendencyOption*)option succ:(TIMGetGroupPendencyListSucc)succ fail:(TIMFail)fail;
/**
* 群未决已读上报
*
* 对于未决信息,SDK 可对其和之前的所有未决信息上报已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。
*
* @param timestamp 上报已读时间戳
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 获取用户所在群组信息(暂未实现)
*
* 开启本地缓存后有效
*
* @param groups 群组id(NSString*)列表,nil时返回群组列表
*
* @return 群组信息(TIMGroupInfo*)列表,assistant未同步时返回nil
*/
- (NSArray*)getGroupInfo:(NSArray*)groups;
@end
#endif /* TIMGroupManager_Ext_h */
... ... @@ -11,18 +11,91 @@
#import "TIMComm.h"
@interface TIMGroupManager : NSObject
#pragma mark 一,获取群组实例
/////////////////////////////////////////////////////////////////////////////////
//
// (一)获取群组实例
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 获取群组实例
/// @{
/**
* 获取群管理器实例
* 1.1 获取群管理器实例
*
* @return 管理器实例
*/
+ (TIMGroupManager*)sharedInstance;
///@}
#pragma mark 二,创建/删除/加入/退出群组
/////////////////////////////////////////////////////////////////////////////////
//
// (二)创建/删除/加入/退出群组
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 创建/删除/加入/退出群组
/// @{
/**
* 创建群组
* 1.1 创建私有群
*
* 快速创建私有群,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createPrivateGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 1.2 创建公开群
*
* 快速创建公开群,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createPublicGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 1.3 创建聊天室
*
* 快速创建聊天室,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param members 群成员,NSString* 数组
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createChatRoomGroup:(NSArray<NSString *>*)members groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 1.4 创建音视频聊天室
*
* 快速创建音视频聊天室,创建者默认加入群组,无需显式指定,群组类型形态请参考官网文档 [群组形态介绍](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)
*
* @param groupName 群名
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createAVChatRoomGroup:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 1.5 创建指定类型和 ID 的群组
*
* 1. 默认创建群组时,IM 通讯云服务器会生成一个唯一的 ID,该 ID 将以 @TGS# 开头,且保证在 App 中唯一,以便后续操作。
* 2. 如果用户需要自定义群组 ID,在创建时可指定 ID,自定义群组 ID 必须为可打印 ASCII 字符(0x20-0x7e),最长 48 个字节,且前缀不能为 @TGS#(避免与默认分配的群组 ID 混淆)
... ... @@ -38,52 +111,499 @@
- (int)createGroup:(NSString*)type groupId:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 解散群组
* 1.6 创建自定义群组
*
* 在创建群组时,除了设置默认的成员以及群名外,还可以设置如群公告、群简介等字段。
*
* @param groupInfo 群组信息,详情请参考 TIMComm+Group.h 里面的 TIMCreateGroupInfo 定义
* @param succ 成功回调 groupId
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)createGroup:(TIMCreateGroupInfo*)groupInfo succ:(TIMCreateGroupSucc)succ fail:(TIMFail)fail;
/**
* 1.7 解散群组
*
* 1. 私有群:任何人都无法解散群组
* 2. 公开群、聊天室、直播大群:群主可以解散群组。
*
* @param group 群组Id
* @param succ 成功回调
* @param fail 失败回调
* @param groupId 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)deleteGroup:(NSString*)group succ:(TIMSucc)succ fail:(TIMFail)fail;
- (int)deleteGroup:(NSString*)groupId succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 申请加群
* 1.8 申请加群
*
* 1. 私有群:不能由用户主动申请入群。
* 2. 公开群、聊天室:可以主动申请进入。
* 3. 直播大群:可以任意加入群组。
* 4. 如果群组设置为需要审核,申请入群后管理员和群主会收到申请入群系统消息 TIMGroupSystemElem,判断 TIMGroupSystemElem 的 Type 类型如果是 TIM_GROUP_SYSTEM_ADD_GROUP_REQUEST_TYPE ,调用消息的 accept 接口同意入群,申请人会收到同意入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_ACCEPT_TYPE),调用 refuse 接口拒绝入群,申请人会收到拒绝入群的消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_ADD_GROUP_REFUSE_TYPE)。
* 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)。
* 5. 如果群主设置为任何人可加入,则直接入群成功。
*
* @param group 申请加入的群组Id
* @param groupId 申请加入的群组Id
* @param msg 申请消息
* @param succ 成功回调(申请成功等待审批)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)joinGroup:(NSString*)group msg:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
- (int)joinGroup:(NSString*)groupId msg:(NSString*)msg succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 主动退出群组
* 1.9 主动退出群组
*
* 1. 私有群:全员可退出群组。
* 2. 公开群、聊天室、直播大群:群主不能退出。
* 3. 当用户主动退出群组时,该用户会收到退群消息 TIMGroupSystemElem(Type:TIM_GROUP_SYSTEM_QUIT_GROUP_TYPE),只有退群的用户自己可以收到。当用户调用 QuitGroup 时成功回调返回,表示已退出成功,此消息主要为了多终端同步,其他终端可以作为更新群列表的时机,本终端可以选择忽略。
*
* @param group 群组Id
* @param succ 成功回调
* @param fail 失败回调
* @param groupId 群组Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)quitGroup:(NSString*)group succ:(TIMSucc)succ fail:(TIMFail)fail;
- (int)quitGroup:(NSString*)groupId succ:(TIMSucc)succ fail:(TIMFail)fail;
@end
///@}
#pragma mark 三,邀请/删除群成员
/////////////////////////////////////////////////////////////////////////////////
//
// (三)邀请/删除群成员
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 邀请/删除群成员
/// @{
/**
* 3.1 邀请好友入群
*
* 1. 只有私有群可以邀请用户入群
* 2. 公开群,聊天室不能邀请用户入群,但在创建群时可以直接拉人入群
* 3. 音视频聊天室不能拉用户入群,也不能在创建群时拉人入群,只能用户主动进群
*
* @param groupId 群组Id
* @param members 要加入的成员列表(NSString* 类型数组)
* @param succ 成功回调 (TIMGroupMemberResult 列表)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)inviteGroupMember:(NSString*)groupId members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 3.2 删除群成员
*
* 1. 私有群:只有创建者可删除群组成员。
* 2. 公开群、聊天室:只有管理员和群主可以踢人。
* 3. 对于直播大群:不能踢人。
*
* @param groupId 群组Id
* @param reason 删除原因
* @param members 要删除的成员列表
* @param succ 成功回调 (TIMGroupMemberResult 列表)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)deleteGroupMemberWithReason:(NSString*)groupId reason:(NSString*)reason members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
///@}
#pragma mark 四,获取群信息
/////////////////////////////////////////////////////////////////////////////////
//
// (四)获取群信息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 获取群信息
/// @{
/**
* 4.1 获取群列表
*
* 获取自己所加入的群列表。
*
* @param succ 成功回调,NSArray 列表为 TIMGroupInfo,结构体只包含 group|groupName|groupType|faceUrl|allShutup|selfInfo 信息
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupList:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 4.2 获取服务器存储的群组信息
*
* 1. 无论是公开群还是私有群,群成员均可以拉到群组信息。
* 2. 如果是公开群,非群组成员可以拉到 group|groupName|owner|groupType|createTime|maxMemberNum|memberNum|introduction|faceURL|addOpt|onlineMemberNum|customInfo 这些字段信息。如果是私有群,非群组成员拉取不到群组信息。
*
* @param succ 成功回调,NSArray 列表为 TIMGroupInfoResult,不包含 selfInfo 信息
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupInfo:(NSArray*)groups succ:(TIMGroupListSucc)succ fail:(TIMFail)fail;
/**
* 4.3 获取本地存储的群组信息
*
* 1. 无论是公开群还是私有群,群成员均可以拉到群组信息。
* 2. 如果是公开群,非群组成员可以拉到 group|groupName|owner|groupType|createTime|maxMemberNum|memberNum|introduction|faceURL|addOpt|onlineMemberNum|customInfo 这些字段信息。如果是私有群,非群组成员拉取不到群组信息。
*
* @param groupId 群组Id
*
* @return 群组信息
*/
- (TIMGroupInfo *)queryGroupInfo:(NSString *)groupId;
/**
* 4.4 获取群成员列表
*
* @param groupId 群组Id
* @param succ 成功回调 (TIMGroupMemberInfo 列表)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupMembers:(NSString*)groupId succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 4.5 获取本人在群组内的成员信息
*
* @param groupId 群组Id
* @param succ 成功回调,返回信息
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupSelfInfo:(NSString*)groupId succ:(TIMGroupSelfSucc)succ fail:(TIMFail)fail;
/**
* 4.6 获取群组指定成员的信息
*
* 获取群组指定成员的信息,需要设置群成员 members,其他限制参考 getGroupMembers
*
* @param groupId 群组Id
* @param members 成员Id(NSString*)列表
* @param succ 成功回调 (TIMGroupMemberInfo 列表)
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getGroupMembersInfo:(NSString*)groupId members:(NSArray<NSString *>*)members succ:(TIMGroupMemberSucc)succ fail:(TIMFail)fail;
/**
* 4.7 获取指定类型的成员列表(支持按字段拉取,分页)
*
* @param groupId 群组Id
* @param filter 群成员角色过滤方式
* @param flags 拉取资料标志
* @param custom 要获取的自定义key(NSString*)列表
* @param nextSeq 分页拉取标志,第一次拉取填0,回调成功如果 nextSeq 不为零,需要分页,传入再次拉取,直至为0
* @param succ 成功回调
* @param fail 失败回调
* @return 0:成功;1:失败
*/
- (int)getGroupMembers:(NSString*)groupId ByFilter:(TIMGroupMemberFilter)filter flags:(TIMGetGroupMemInfoFlag)flags custom:(NSArray<NSString *>*)custom nextSeq:(uint64_t)nextSeq succ:(TIMGroupMemberSuccV2)succ fail:(TIMFail)fail;
/**
* 4.8 获取接受消息选项
*
* @param groupId 群组Id
* @param succ 成功回调, TIMGroupReceiveMessageOpt 0:接收消息;1:不接收消息,服务器不进行转发;2:接受消息,不进行 iOS APNs 推送
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getReciveMessageOpt:(NSString*)groupId succ:(TIMGroupReciveMessageOptSucc)succ fail:(TIMFail)fail;
///@}
#pragma mark 五,修改群信息
/////////////////////////////////////////////////////////////////////////////////
//
// (五)修改群信息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 修改群信息
/// @{
/**
* 5.1 修改群名
*
* 1. 公开群、聊天室和直播大群:只有群主或者管理员可以修改群名。
* 2. 私有群:任何人可修改群名。
*
* @param groupId 群组Id
* @param groupName 新群名
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupName:(NSString*)groupId groupName:(NSString*)groupName succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.2 修改群简介
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群简介。
* 2. 私有群:任何人可修改群简介。
*
* @param groupId 群组Id
* @param introduction 群简介(最长120字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupIntroduction:(NSString*)groupId introduction:(NSString*)introduction succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.3 修改群公告
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群公告。
* 2. 私有群:任何人可修改群公告。
*
* @param groupId 群组Id
* @param notification 群公告(最长150字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupNotification:(NSString*)groupId notification:(NSString*)notification succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.4 修改群头像
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改群头像。
* 2. 私有群:任何人可修改群头像。
*
* @param groupId 群组Id
* @param url 群头像地址(最长100字节)
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupFaceUrl:(NSString*)groupId url:(NSString*)url succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.5 修改加群选项
*
* 1. 公开群、聊天室、直播大群:只有群主或者管理员可以修改加群选项。
* 2. 私有群:只能通过邀请加入群组,不能主动申请加入某个群组。
*
* @param groupId 群组Id
* @param opt 加群选项,详见 TIMGroupAddOpt
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupAddOpt:(NSString*)groupId opt:(TIMGroupAddOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.6 修改群组是否可被搜索属性
*
* @param groupId 群组Id
* @param searchable 是否能被搜索
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupSearchable:(NSString*)groupId searchable:(BOOL)searchable succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.8 修改群组全员禁言属性
*
* 1. 群主、管理员:有权限进行全员禁言的操作。
* 2. 所有群组类型:都支持全员禁言的操作。
*
* @param groupId 群组Id
* @param shutup 是否禁言
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupAllShutup:(NSString*)groupId shutup:(BOOL)shutup succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.9 修改群自定义字段集合
*
* 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群维度自定义字段 配置相关的 key 和权限。
*
*
* @param groupId 群组Id
* @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型,value 长度不超过 512 字节
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupCustomInfo:(NSString*)groupId customInfo:(NSDictionary<NSString *,NSData *>*)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.10 转让群给新群主
*
* 1. 只有群主才有权限进行群转让操作。
* 2. 直播大群不能进行群转让操作。
*
* @param groupId 群组Id
* @param identifier 新的群主Id
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupOwner:(NSString*)groupId user:(NSString*)identifier succ:(TIMSucc)succ fail:(TIMFail)fail;
///@}
#pragma mark 六,修改群成员信息
/////////////////////////////////////////////////////////////////////////////////
//
// (六)修改群成员信息
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 修改群成员信息
/// @{
/**
* 6.1 修改群成员名片
*
* 只有本人、管理员或群主能够调用
*
* @param groupId 群组Id
* @param identifier 被操作用户identifier
* @param nameCard 群名片
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetNameCard:(NSString*)groupId user:(NSString*)identifier nameCard:(NSString*)nameCard succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.2 修改群成员角色
*
* 1. 群主、管理员:可以进行对群成员的身份进行修改。
* 2. 直播大群:不支持修改用户群内身份。
*
* @param groupId 群组Id
* @param identifier 被修改角色的用户identifier
* @param role 角色(注意:不能修改为群主),详见 TIMGroupMemberRole
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetRole:(NSString*)groupId user:(NSString*)identifier role:(TIMGroupMemberRole)role succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.3 修改群组成员是否可见属性
*
* @param groupId 群组Id
* @param visible 是否可见
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberVisible:(NSString*)groupId visible:(BOOL)visible succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.4 禁言用户
*
* 只有管理员或群主能够调用
*
* @param groupId 群组Id
* @param identifier 被禁言的用户identifier
* @param stime 禁言时间
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetSilence:(NSString*)groupId user:(NSString*)identifier stime:(uint32_t)stime succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 5.7 修改个人接受消息选项
*
* 默认情况下,公开群和私有群是接收并离线推送群消息,聊天室和直播大群是接收但不离线推送群消息。
*
* @param groupId 群组Id
* @param opt 接受消息选项,详见 TIMGroupReceiveMessageOpt
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyReceiveMessageOpt:(NSString*)groupId opt:(TIMGroupReceiveMessageOpt)opt succ:(TIMSucc)succ fail:(TIMFail)fail;
/**
* 6.5 修改群成员自定义字段集合
*
* 通过 [IM 控制台](https://console.cloud.tencent.com/avc) -> 功能配置 -> 群成员维度自定义字段 配置相关的 key 和权限。
*
* @param groupId 群组 Id
* @param identifier 被操作用户 identifier
* @param customInfo 自定义字段集合,key 是 NSString* 类型,value 是 NSData* 类型,value 长度不超过 64 字节
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)modifyGroupMemberInfoSetCustomInfo:(NSString*)groupId user:(NSString*)identifier customInfo:(NSDictionary<NSString*,NSData*> *)customInfo succ:(TIMSucc)succ fail:(TIMFail)fail;
///@}
#pragma mark 七,群未决逻辑
/////////////////////////////////////////////////////////////////////////////////
//
// (七)群未处理请求逻辑
//
/////////////////////////////////////////////////////////////////////////////////
/// @name 群未处理请求逻辑
/// @{
/**
* 7.1 获取群组未处理请求列表
*
* 1. 群未处理请求泛指所有需要审批的群相关的操作(例如:加群待审批,拉人入群待审批等等)。即便审核通过或者拒绝后,该条信息也可通过此接口拉回,拉回的信息中有已处理标志
* 2. 审批人:有权限拉取相关信息,如果 UserA 申请加入群 GroupA,则群管理员可获取此未处理相关信息,UserA 因为没有审批权限,不需要拉取未处理信息。如果 AdminA 拉 UserA 进去 GroupA,则 UserA 可以拉取此未处理相关信息,因为该未处理信息待 UserA 审批。
*
* @param option 拉取群未处理请求参数配置,详情请参考 TIMComm.h -> TIMGroupPendencyOption
* @param succ 成功回调,返回未决列表
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)getPendencyFromServer:(TIMGroupPendencyOption*)option succ:(TIMGetGroupPendencyListSucc)succ fail:(TIMFail)fail;
/**
* 7.2 群未处理列表已读上报
*
* 对于未处理信息,SDK 可对其和之前的所有未处理请求上报已读。上报已读后,仍然可以拉取到这些未决信息,但可通过对已读时戳的判断判定未决信息是否已读。
*
* @param timestamp 上报已读时间戳
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0:成功;1:失败
*/
- (int)pendencyReport:(uint64_t)timestamp succ:(TIMSucc)succ fail:(TIMFail)fail;
///@}
@end
#endif
... ...
/////////////////////////////////////////////////////////////////////
//
// TIMManager+MsgExt.h
// IMMessageExt
// 腾讯云通信服务 IMSDK
//
// Created by tomzhu on 2017/1/11.
// 模块名称:TIMManager + MsgExt
//
// 模块功能:此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
//
/////////////////////////////////////////////////////////////////////
#ifndef TIMManager_MsgExt_h
#define TIMManager_MsgExt_h
#import "TIMManager.h"
#import "TIMComm+MsgExt.h"
@class TIMMessage;
/**
* IMSDK 扩展类,此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
*/
@interface TIMManager (MsgExt)
/**
* 发送消息给多个用户
* 获取群管理器
*
* @param msg 发送的消息
* @param users 目标用户的id列表
* @param succ 成功回调
* @param fail 失败回调
*
* @return 0 发送成功
* 此函数待废弃,请直接使用 TIMGroupManager 的 sharedInstance 函数
*
* @return 群管理器,详情请参考 TIMGroupManager.h 中的 TIMGroupManager 定义
*/
- (int)sendMessage:(TIMMessage*)msg toUsers:(NSArray*)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail;
- (TIMGroupManager*)groupManager;
/**
* 获取会话(TIMConversation*)列表
* 获取好友管理器
*
* @return 会话列表
* 此函数待废弃,请直接使用 TIMFriendshipManager 的 sharedInstance 函数
*
* @return 好友管理器,详情请参考 TIMFriendshipManager.h 中的 TIMFriendshipManager 定义
*/
- (NSArray*)getConversationList;
- (TIMFriendshipManager*)friendshipManager;
/**
* 删除会话
*
* @param type 会话类型,TIM_C2C:表示单聊;TIM_GROUP:表示群聊
* @param receiver 用户 identifier 或者群组 Id
* 获取会话数量
*
* @return TRUE:删除成功;FALSE:删除失败
* @return 会话数量
*/
- (BOOL)deleteConversation:(TIMConversationType)type receiver:(NSString*)receiver;
- (int)conversationCount;
/**
* 删除会话和消息
*
* 这里只是删除本地消息,通过 getMessage 会拉取到漫游消息,所以存在删除消息成功,但是拉取到消息的情况,取决于是否重新从漫游拉回到本地。如果不需要拉取漫游,可以通过 getLocalMessage 获取本地消息,或者只通过 getMessage 拉取指定条数(如未读条数数量)的消息。
* 发送消息给多个用户
*
* @param type 会话类型,TIM_C2C:表示单聊;TIM_GROUP:表示群聊
* @param receiver 用户identifier 或者 群组 Id
* @param msg 发送的消息
* @param users 目标用户的id列表
* @param succ 成功回调
* @param fail 失败回调
*
* @return TRUE:删除成功;FALSE:删除失败
* @return 0 发送成功
*/
- (BOOL)deleteConversationAndMessages:(TIMConversationType)type receiver:(NSString*)receiver;
- (int)sendMessage:(TIMMessage*)msg toUsers:(NSArray*)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail;
/**
* 获取会话数量
* 自定义版本号
*
* @return 会话数量
* @param version 版本号
* @note setCustomVersion() 要在 initSdk() 之前调用。
*/
- (int)conversationCount;
- (void)setCustomVersion:(NSString *)version;
/**
* 初始化存储(暂未实现)
*
* 仅查看历史消息时使用,如果要收发消息等操作,如login成功,不需要调用此函数
* 删除未读消息的时候减少会话的未读数
*
* @param param 登陆参数(userSig 不用填写)
* @param succ 成功回调,收到回调时,可以获取会话列表和消息
* @param fail 失败回调
* 不建议客户使用,删除消息和减少未读数是本地操作,没有和服务器做同步,在程序卸载或则多端同步中会出现未读数不一致的问题。
*
* @return 0:请求成功;1:失败
* @note reduceUnreadNumberWhenRemoveMessage 要在 initSdk() 之前调用。
*/
- (int)initStorage:(TIMLoginParam*)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail;
- (void)reduceUnreadNumberWhenRemoveMessage;
@end
... ...