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

– unInit

1.3 反初始化

- (void)unInit

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

主要用来开启/关闭自动已读上报和已读回执,设置默认拉取的群组资料,群成员资料字段,监听用户登录状态、会话刷新、消息已读回执、文件上传进度、群组事件通知。

  1. disableAutoReport 是否开启多终端同步未读提醒,这个选项主要影响多终端登录时的未读消息提醒逻辑。 YES:只有当一个终端调用 setReadMessage() 将消息标记为已读,另一个终端再登录时才不会收到未读提醒; NO:消息一旦被一个终端接收,另一个终端都不会再次提醒。同理,卸载 APP 再安装也无法再次收到这些未读消息。
  2. enableReadReceipt 是否开启被阅回执,接收端设置,发送端才会生效。 YES:接收者查看消息(setReadMessage)后,消息的发送者会收到 TIMMessageReceiptListener 的回调提醒; NO: 不开启被阅回执,默认不开启。
  3. groupInfoOpt 设置拉取群资料中的自定义字段。
  4. 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

  1. 登录需要设置用户名 userID 和用户签名 userSig,userSig 生成请参 UserSig 后台 API
  2. 如果 userSig 过期,登录会返回 ERR_USER_SIG_EXPIRED:6206 错误码,收到错误码后请生成新的 userSig 重新登录。
  3. 用户在线情况下被踢,会在 TIMUserConfig 里面配置的 TIMUserStatusListener 监听器获取 onForceOffline 回调,收到回调后可以选择重新登录。
  4. 用户离线状态下被踢,会在用户重新登录时收到 (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 泄漏的风险。

  1. 首次登录之后,SDK 会把登录信息存在在本地,下次登录即可调用自动登录
  2. 如果用户之前没有登录过,或则 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

– getLogPath

6.3 获取日志文件路径

- (NSString *)getLogPath

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

此函数待废弃,请直接使用 TIMGroupManagersharedInstance 函数

Declared In

TIMManager+MsgExt.h

– friendshipManager

获取好友管理器

- (TIMFriendshipManager *)friendshipManager

Return Value

好友管理器,详情请参考 TIMFriendshipManager.h 中的 TIMFriendshipManager 定义

Discussion

此函数待废弃,请直接使用 TIMFriendshipManagersharedInstance 函数

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