TIMManager Class Reference
Inherits from | NSObject |
---|---|
Declared in | TIMManager.h |
Overview
IMSDK 主核心类,负责 IMSDK 的初始化、登录、创建会话、管理推送等功能。
IMSDK 扩展类,此处主要存放待废弃的 API 函数,建议您使用 TIMManager.h 内部声明的接口函数
初始化相关接口
+ sharedInstance
1.1 获取管理器实例 TIMManager
+ (TIMManager *)sharedInstance
Return Value
管理器实例
Declared In
TIMManager.h
– initSdk:
1.2 初始化 SDK,设置全局配置信息
- (int)initSdk:(TIMSdkConfig *)globalConfig
Parameters
globalConfig |
配置信息,全局有效,详情请参考 TIMComm.h 中的 TIMSdkConfig 定义。 |
---|
Return Value
0:成功;1:失败,config 为 nil
Discussion
初始化 SDK 需要设置 TIMSdkConfig 信息,TIMSdkConfig 主要包含 sdkAppId 设置、Log 相关逻辑设置、数据库存储路径设置、网络监听设置等, 其中 sdkAppId 的获取请参考官网文档 跑通Demo(iOS与Mac)。
Declared In
TIMManager.h
– getGlobalConfig
1.4 获取全局配置信息
- (TIMSdkConfig *)getGlobalConfig
Return Value
全局配置,详情请参考 TIMComm.h 中的 TIMSdkConfig 定义
Declared In
TIMManager.h
– setUserConfig:
1.5 设置用户配置信息
- (int)setUserConfig:(TIMUserConfig *)config
Parameters
config |
配置信息,对当前 TIMManager 有效,详情请参考 TIMComm.h 中的 TIMUserConfig 定义 |
---|
Return Value
0:成功;1:失败,config 为 nil
Discussion
主要用来开启/关闭自动已读上报和已读回执,设置默认拉取的群组资料,群成员资料字段,监听用户登录状态、会话刷新、消息已读回执、文件上传进度、群组事件通知。
- disableAutoReport 是否开启多终端同步未读提醒,这个选项主要影响多终端登录时的未读消息提醒逻辑。 YES:只有当一个终端调用 setReadMessage() 将消息标记为已读,另一个终端再登录时才不会收到未读提醒; NO:消息一旦被一个终端接收,另一个终端都不会再次提醒。同理,卸载 APP 再安装也无法再次收到这些未读消息。
- enableReadReceipt 是否开启被阅回执,接收端设置,发送端才会生效。 YES:接收者查看消息(setReadMessage)后,消息的发送者会收到 TIMMessageReceiptListener 的回调提醒; NO: 不开启被阅回执,默认不开启。
- groupInfoOpt 设置拉取群资料中的自定义字段。
- groupMemberInfoOpt 设置拉群成员资料中的自定义字段。
Note: setUserConfig() 要在 initSdk() 之后 和 login() 之前调用。
Declared In
TIMManager.h
– getUserConfig
1.6 获取用户配置信息
- (TIMUserConfig *)getUserConfig
Return Value
当前 manager 绑定用户的配置,详情请参考 TIMComm.h 中的 TIMUserConfig 定义
Declared In
TIMManager.h
– addMessageListener:
1.7 新消息接收监听
- (int)addMessageListener:(id<TIMMessageListener>)listener
Parameters
listener |
回调,详情请参考 TIMCallback.h 中的 TIMMessageListener 定义 |
---|
Return Value
0:成功;1:失败,listener 为 nil
Discussion
添加消息监听后,会在 TIMMessageListener 的 onNewMessage 收到回调消息,消息内容通过参数 TIMMessage 传递。 消息的解析可参阅 消息解析 。
Declared In
TIMManager.h
– removeMessageListener:
1.8 移除消息监听
- (int)removeMessageListener:(id<TIMMessageListener>)listener
Parameters
listener |
回调,详情请参考 TIMCallback.h 中的 TIMMessageListener 定义 |
---|
Return Value
0:成功;1:失败,listener 为 nil
Declared In
TIMManager.h
登录相关接口
– login:succ:fail:
2.1 登录
- (int)login:(TIMLoginParam *)param succ:(TIMLoginSucc)succ fail:(TIMFail)fail
Parameters
param |
登录参数,详情请参考 TIMComm.h 中的 TIMLoginParam 定义 |
---|---|
succ |
成功回调,详情请参考 TIMComm.h 中的 TIMLoginSucc 定义 |
fail |
失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败,请检查 param 参数是否正常
Discussion
- 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参 UserSig 后台 API。
- 如果 userSig 过期,登录会返回 ERR_USER_SIG_EXPIRED:6206 错误码,收到错误码后请生成新的 userSig 重新登录。
- 用户在线情况下被踢,会在 TIMUserConfig 里面配置的 TIMUserStatusListener 监听器获取 onForceOffline 回调,收到回调后可以选择重新登录。
- 用户离线状态下被踢,会在用户重新登录时收到 (ERR_IMSDK_KICKED_BY_OTHERS:6208) 错误码,此时需要再次调用 login() 强制上线。
更多详情请参考 用户状态变更。
Declared In
TIMManager.h
– autoLogin:succ:fail:
2.2 自动登录
- (int)autoLogin:(NSString *)userID succ:(TIMLoginSucc)succ fail:(TIMFail)fail
Parameters
userID |
自动登录用户名 |
---|---|
succ |
成功回调,详情请参考 TIMComm.h 中的 TIMLoginSucc 定义 |
fail |
失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败,请检查 param 参数是否正常
Discussion
自动登录类似“记住密码”的功能,如果上一次已经成功登录,那么一段时间内都只需要传入用户名就可以完成登录。 相比于普通的 login(TIMLoginParam) 接口,该接口可以减少 IM SDK 向您的服务器索要 UserSig 的频率, 既可以加快登录速度,又能减少你的 UserSig 服务器压力,也在一定程度上降低了 UserSig 泄漏的风险。
- 首次登录之后,SDK 会把登录信息存在在本地,下次登录即可调用自动登录
- 如果用户之前没有登录过,或则 APP 被卸载过,自动登录会报 ERR_NO_PREVIOUS_LOGIN:6026 错误,这个时候请调用 login 接口重新登录。
Declared In
TIMManager.h
– logout:fail:
2.3 登出
- (int)logout:(TIMLoginSucc)succ fail:(TIMFail)fail
Parameters
succ |
成功回调,登出成功 |
---|---|
fail |
失败回调,返回错误码和错误信息 |
Return Value
0:发送登出包成功,等待回调;1:失败
Discussion
退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
Declared In
TIMManager.h
– getLoginUser
2.4 获取当前登录的用户
- (NSString *)getLoginUser
Return Value
如果登录返回用户的 userID,如果未登录返回 nil
Declared In
TIMManager.h
– getLoginStatus
2.5 获取当前登录状态
- (TIMLoginStatus)getLoginStatus
Return Value
登录状态,详情请参考 TIMComm.h 中的 TIMLoginStatus 定义
Declared In
TIMManager.h
会话管理器
– getConversationList
3.1 获取会话列表
- (NSArray<TIMConversation*> *)getConversationList
Return Value
会话列表
Discussion
一个会话对应一个聊天窗口,比如跟一个好友的 1v1 聊天,或者一个聊天群,都是一个会话。
Declared In
TIMManager.h
– getConversation:receiver:
- 3.2 获取单个会话 *
- TIMConversation 负责会话相关操作,包含发送消息、获取会话消息缓存、获取未读计数等。 *
- @param type 详情请参考 TIMComm.h 里面的 TIMConversationType 定义
- @param conversationId 会话 ID 单聊类型(C2C) :为对方 userID; 群组类型(GROUP) :为群组 groupId; 系统类型(SYSTEM):为 @“” *
- @return 会话对象,详情请参考 TIMConversation.h 里面的 TIMConversation 定义
- (TIMConversation *)getConversation:(TIMConversationType)type receiver:(NSString *)conversationId
Declared In
TIMManager.h
– deleteConversation:receiver:
3.3 删除单个会话
- (BOOL)deleteConversation:(TIMConversationType)type receiver:(NSString *)conversationId
Parameters
type |
会话类型,详情请参考 TIMComm.h 里面的 TIMConversationType 定义 |
---|---|
conversationId |
会话 Id 单聊类型(C2C) :为对方 userID; 群组类型(GROUP) :为群组 groupId; 系统类型(SYSTEM):为 @“” |
Return Value
YES:删除成功;NO:删除失败
Declared In
TIMManager.h
– deleteConversationAndMessages:receiver:
3.4 删除单个会话和对应的会话消息
- (BOOL)deleteConversationAndMessages:(TIMConversationType)type receiver:(NSString *)conversationId
Parameters
type |
会话类型,详情请参考 TIMComm.h 里面的 TIMConversationType 定义 |
---|---|
conversationId |
会话 Id 单聊类型(C2C) :为对方 userID; 群组类型(GROUP) :为群组 groupId; 系统类型(SYSTEM):为 @“” |
Return Value
YES:删除成功;NO:删除失败
Discussion
本接口与 deleteConversation() 的差异在于,deleteConversation() 只是删除单个会话,而本接口会额外把本地缓存的消息记录也一并删除掉。
Note: 本接口只能删除本地缓存的历史消息,无法删除云端保存的历史消息。
Declared In
TIMManager.h
设置 APNs 推送
– setToken:succ:fail:
4.1. 设置客户端 Token 和证书 busiId
- (int)setToken:(TIMTokenParam *)token succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
token |
详情请参考 TIMComm.h 中的 TIMTokenParam 定义 |
---|---|
succ |
成功回调,详情请参考 TIMComm.h 中的 TIMSucc 定义 |
fail |
失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败,token 参数异常
Discussion
token 是苹果后台对客户端的唯一标识,需要主动调用系统 API 向苹果请求获取,请求成功后, 可以在 didRegisterForRemoteNotificationsWithDeviceToken 回调收到对应的 token 信息。 具体实现见下面代码示例:
//获取 token 代码示例 if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { [[UIApplication sharedApplication] registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } else{ [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)]; } //收到 token 代码示例 -(void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { //回调的 deviceToken 就是需要的 token 信息 }
busiId 是推送证书 ID,是向 IM 控制台上传 iOS 证书(p.12)生成的, 具体步骤请参考 离线推送。
Declared In
TIMManager.h
– setAPNS:succ:fail:
4.2. 设置 APNS
- (int)setAPNS:(TIMAPNSConfig *)config succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
config |
APNS 配置,详情请参考 TIMComm.h 中的 TIMAPNSConfig 定义 |
---|---|
succ |
成功回调,详情请参考 TIMComm.h 中的 TIMSucc 定义 |
fail |
失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败,config 参数异常
Discussion
设置 APNS,可设置单聊、群组推送声音,也可以设置是否开启推送。
Declared In
TIMManager.h
– getAPNSConfig:fail:
4.3. 获取 APNS 配置
- (int)getAPNSConfig:(TIMAPNSConfigSucc)succ fail:(TIMFail)fail
Parameters
succ |
成功回调,返回配置信息,详情请参考 TIMComm.h 中的 TIMAPNSConfigSucc 定义 |
---|---|
fail |
失败回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败
Declared In
TIMManager.h
– doBackground:succ:fail:
4.4. APP 进后台
- (int)doBackground:(TIMBackgroundParam *)param succ:(TIMSucc)succ fail:(TIMFail)fail
Parameters
param |
上报参数,详情请参考 TIMComm.h 中的 TIMBackgroundParam 定义 |
---|---|
succ |
成功时回调,详情请参考 TIMComm.h 中的 TIMSucc 定义 |
fail |
失败时回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败
Discussion
APP 进后台的时候需要主动调用 doBackground ,这个时候后台知道 APP 的状态,之后的消息会下发推送通知。
- (void)applicationDidEnterBackground:(UIApplication *)application { [TIMBackgroundParam](../Classes/TIMBackgroundParam.html) *param = [[TIMBackgroundParam alloc] init]; [param setC2cUnread:unReadCount]; [[TIMManager sharedInstance] doBackground:param succ:^() { // to do } fail:^(int code, NSString * err) { // to do }]; }
Declared In
TIMManager.h
– doForeground:fail:
4.5. APP 进前台
- (int)doForeground:(TIMSucc)succ fail:(TIMFail)fail
Parameters
succ |
成功时回调,详情请参考 TIMComm.h 中的 TIMSucc 定义 |
---|---|
fail |
失败时回调,详情请参考 TIMComm.h 中的 TIMFail 定义 |
Return Value
0:成功;1:失败
Discussion
APP 进前台的时候需要主动调用 doForeground,这个时候后台知道 APP 的状态,之后的消息不会下发推送通知。
- (void)applicationDidBecomeActive:(UIApplication *)application { [[TIMManager sharedInstance] doForeground:^() { //to do } fail:^(int code, NSString * err) { //to do }]; }
Declared In
TIMManager.h
未登录查看本地会话和消息
– initStorage:succ:fail:
5.1 在未登录的情况下加载本地存储
- (int)initStorage:(NSString *)userID succ:(TIMLoginSucc)succ fail:(TIMFail)fail
Parameters
userID |
用户名 |
---|---|
succ |
成功回调,收到回调时,可以获取会话列表和消息 |
fail |
失败回调 |
Return Value
0:加载成功;1:请求失败
Discussion
该接口相当于 login() 函数的无网络版本,适用于在用户没有网络(未登录)的情况下查看用户的本地会话和消息。
Note: 如过已经 login() 成功,请不要调用此函数,否则会导致各种异常问题。
Declared In
TIMManager.h
调试相关接口
– GetVersion
6.1 获取版本号
- (NSString *)GetVersion
Return Value
返回版本号,字符串表示,例如 v1.1.1
Declared In
TIMManager.h
– log:tag:msg:
6.2 打印日志
- (void)log:(TIMLogLevel)level tag:(NSString *)tag msg:(NSString *)msg
Parameters
level |
日志级别,详情请参考 TIMComm.h 中的 TIMLogLevel 定义 |
---|---|
tag |
模块 tag |
msg |
要输出的日志内容 |
Discussion
通过 ImSDK 提供的日志功能打印日志
Declared In
TIMManager.h
– getIsLogPrintEnabled
6.4 获取日志打印开启状态
- (BOOL)getIsLogPrintEnabled
Return Value
YES:允许 log 打印;NO:不允许 log 打印
Discussion
您可以在 initSdk -> TIMSdkConfig -> disableLogPrint 设置日志是否打印
Declared In
TIMManager.h
– getLogLevel
6.5 获取日志级别
- (TIMLogLevel)getLogLevel
Return Value
返回日志级别,详情请参考 TIMComm.h 中的 TIMLogLevel 定义
Declared In
TIMManager.h
MsgExt Methods
– groupManager
获取群管理器
- (TIMGroupManager *)groupManager
Return Value
群管理器,详情请参考 TIMGroupManager.h 中的 TIMGroupManager 定义
Discussion
此函数待废弃,请直接使用 TIMGroupManager 的 sharedInstance 函数
Declared In
TIMManager+MsgExt.h
– friendshipManager
获取好友管理器
- (TIMFriendshipManager *)friendshipManager
Return Value
好友管理器,详情请参考 TIMFriendshipManager.h 中的 TIMFriendshipManager 定义
Discussion
此函数待废弃,请直接使用 TIMFriendshipManager 的 sharedInstance 函数
Declared In
TIMManager+MsgExt.h
– conversationCount
获取会话数量
- (int)conversationCount
Return Value
会话数量
Declared In
TIMManager+MsgExt.h
– sendMessage:toUsers:succ:fail:
发送消息给多个用户
- (int)sendMessage:(TIMMessage *)msg toUsers:(NSArray *)users succ:(TIMSucc)succ fail:(TIMSendToUsersFail)fail
Parameters
msg |
发送的消息 |
---|---|
users |
目标用户的id列表 |
succ |
成功回调 |
fail |
失败回调 |
Return Value
0 发送成功
Declared In
TIMManager+MsgExt.h
– setCustomVersion:
自定义版本号
- (void)setCustomVersion:(NSString *)version
Parameters
version |
版本号 |
---|
Discussion
Note: setCustomVersion() 要在 initSdk() 之前调用。
Declared In
TIMManager+MsgExt.h
– reduceUnreadNumberWhenRemoveMessage
删除未读消息的时候减少会话的未读数
- (void)reduceUnreadNumberWhenRemoveMessage
Discussion
不建议客户使用,删除消息和减少未读数是本地操作,没有和服务器做同步,在程序卸载或则多端同步中会出现未读数不一致的问题。
Note: reduceUnreadNumberWhenRemoveMessage 要在 initSdk() 之前调用。
Declared In
TIMManager+MsgExt.h