public class TIMManager
extends java.lang.Object
1. 初始化:初始化是使用 TIMSDK 的前提,任何其它 API 的调用都应该在 init 接口之后被调用。
2. 登录:需要设置 SDKAppID,UserID 和 UserSig 才能使用腾讯云服务。
3. 会话:一个会话对应一个聊天窗口,比如跟一个好友的 C2C 聊天,或者一个聊天群,都是一个会话。
4. 推送:管理和设置离线推送的相关功能,包括 token 和开关等。
限定符和类型 | 字段和说明 |
---|---|
static int |
TIM_STATUS_LOGINED
已登录
|
static int |
TIM_STATUS_LOGINING
登录中
|
static int |
TIM_STATUS_LOGOUT
无登录,初始化状态、登录失败也属于无登录状态
|
限定符和类型 | 方法和说明 |
---|---|
void |
addMessageListener(TIMMessageListener listener)
新增新消息接收监听
添加消息监听后,会在 TIMMessageListener 的 onNewMessage 收到回调消息,消息内容通过参数 TIMMessage 传递。
|
void |
addMessageUpdateListener(TIMMessageUpdateListener listener)
添加一个消息更新监听器,以便监听消息变更
|
void |
autoLogin(java.lang.String userID,
TIMCallBack callback)
自动登录
自动登录类似“记住密码”的功能,如果上一次已经成功登录,那么一段时间内都只需要传入用户名就可以完成登录。
|
boolean |
deleteConversation(TIMConversationType type,
java.lang.String conversationId)
删除单个会话
删除本地和服务器上保存的单个会话,以及该会话中的本地和服务器的所有消息
|
boolean |
deleteConversationAndLocalMsgs(TIMConversationType type,
java.lang.String conversationId)
删除单个会话和对应的会话消息
本接口与 deleteConversation() 的差异在于,仅把本地缓存的消息记录删除掉,不会删除服务器保存的消息。
|
void |
doBackground(TIMBackgroundParam param,
TIMCallBack callBack)
上报 App 应用退至后台
APP 进后台的时候需要主动调用 doBackground ,这个时候后台知道 APP 的状态。
|
void |
doForeground(TIMCallBack callBack)
上报 App 应用切换回前台
APP 切前台的时候需要主动调用 doForeground ,这个时候后台知道 APP 的状态。
|
TIMConversation |
getConversation(TIMConversationType type,
java.lang.String conversationId)
获取单个会话
TIMConversation 负责会话相关操作,包含发送消息、获取会话消息缓存、获取未读计数等。
|
java.util.List<TIMConversation> |
getConversationList()
获取会话列表
一个会话对应一个聊天窗口,比如跟一个好友的 1v1 聊天,或者一个聊天群,都是一个会话。
|
static TIMManager |
getInstance()
获取管理器实例 TIMManager
|
int |
getLoginStatus()
获取当前登录状态
|
java.lang.String |
getLoginUser()
获取当前登录的用户
|
TIMNetworkStatus |
getNetworkStatus()
获取网络连接状态
|
void |
getOfflinePushSettings(TIMValueCallBack<TIMOfflinePushSettings> cb)
获取离线推送配置,需登录后才能获取
|
TIMSdkConfig |
getSdkConfig()
获取全局配置信息
|
long |
getServerTime()
获取服务器时间
|
long |
getServerTimeDiff()
获取服务器与本地的时间差,单位为秒,时间差值 = svrTime - localTime
|
TIMUserConfig |
getUserConfig()
获取用户配置信息
|
java.lang.String |
getVersion()
获取版本号
|
boolean |
init(android.content.Context context,
TIMSdkConfig config)
初始化 SDK,设置全局配置信息
初始化 SDK 需要设置 TIMSdkConfig 信息,TIMSdkConfig 主要包含 sdkAppId 设置、Log 相关逻辑设置、数据库存储路径设置、网络监听设置等,
其中 sdkAppId 的获取请参考官网文档 [跑通Demo(Android)](https://cloud.tencent.com/document/product/269/32678)。
|
int |
initStorage(java.lang.String userID,
TIMCallBack cb)
在未登录的情况下加载本地存储
该接口相当于 login() 函数的无网络版本,适用于在用户没有网络(未登录)的情况下查看用户的本地会话和消息。
|
boolean |
isInited()
是否已经初始化
|
void |
login(java.lang.String userID,
java.lang.String userSig,
TIMCallBack callback)
登录
1.
|
void |
logout(TIMCallBack callback)
登出
退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
|
void |
removeMessageListener(TIMMessageListener listener)
移除消息监听
|
void |
removeMessageUpdateListener(TIMMessageUpdateListener listener)
删除一个消息更新监听器
|
void |
setOfflinePushListener(TIMOfflinePushListener listener)
已过时。
|
void |
setOfflinePushSettings(TIMOfflinePushSettings settings)
初始化离线推送配置,需登录后设置才生效
设置离线推送,可以设置是否开启推送,单聊、群组推送声音厂商暂时还不支持。
|
void |
setOfflinePushToken(TIMOfflinePushToken token,
TIMCallBack cb)
设置客户端 token 和证书 bussid
token 是各个手机厂商的推送服务对客户端的唯一标识,需要集成各个厂商的推送服务获取;
bussid 是推送证书 ID,是在 IM 控制台上生成的,
具体步骤请参考 https://cloud.tencent.com/document/product/269/9234。
|
void |
setUserConfig(TIMUserConfig userConfig)
设置用户配置信息
主要用来开启/关闭自动已读上报和已读回执,设置默认拉取的群组资料,群成员资料字段,监听用户登录状态、会话刷新、消息已读回执、文件上传进度、群组事件通知。
|
boolean |
unInit()
反初始化
|
public static final int TIM_STATUS_LOGINED
public static final int TIM_STATUS_LOGINING
public static final int TIM_STATUS_LOGOUT
public static TIMManager getInstance()
public boolean init(android.content.Context context, TIMSdkConfig config)
初始化 SDK 需要设置 TIMSdkConfig 信息,TIMSdkConfig 主要包含 sdkAppId 设置、Log 相关逻辑设置、数据库存储路径设置、网络监听设置等, 其中 sdkAppId 的获取请参考官网文档 [跑通Demo(Android)](https://cloud.tencent.com/document/product/269/32678)。
context
- 上下文config
- 配置信息,全局有效,详情请参考 TIMSdkConfig
定义。public boolean unInit()
public TIMSdkConfig getSdkConfig()
TIMSdkConfig
定义public void setUserConfig(TIMUserConfig userConfig)
主要用来开启/关闭自动已读上报和已读回执,设置默认拉取的群组资料,群成员资料字段,监听用户登录状态、会话刷新、消息已读回执、文件上传进度、群组事件通知。
1. disableAutoReport 是否关闭自动已读。true:只有看过的消息(setReadMessage)才不会反复提醒;false:消息一旦被接收,不管有没有被看过,都不会再次提醒。
2. enableReadReceipt 是否开启被阅回执。true:接收者查看消息(setReadMessage)后,消息的发送者会收到 TIMMessageReceiptListener 的回调提醒;false: 不开启。
3. TIMGroupSettings.setGroupInfoOptions 设置拉取群资料中的基础字段和自定义字段
4. TIMGroupSettings.setMemberInfoOptions 设置拉取群成员资料中的基础字段和自定义字段
userConfig
- public TIMUserConfig getUserConfig()
public void addMessageListener(TIMMessageListener listener)
添加消息监听后,会在 TIMMessageListener 的 onNewMessage 收到回调消息,消息内容通过参数 TIMMessage 传递。 消息的解析可参阅 https://cloud.tencent.com/document/product/269/9232#.E6.B6.88.E6.81.AF.E8.A7.A3.E6.9E.90。
listener
- 回调,详情请参考 TIMMessageListener 定义public void removeMessageListener(TIMMessageListener listener)
listener
- 回调,详情请参考 TIMMessageListener 定义public boolean isInited()
public void login(java.lang.String userID, java.lang.String userSig, TIMCallBack callback)
1. 登录需要设置用户名 UserID 和用户签名 UserSig,UserSig 生成请参 [UserSig 后台 API](https://cloud.tencent.com/document/product/269/32688)。
2. 如果 UserSig 过期,登录会返回 ERR_USER_SIG_EXPIRED:6206 错误码,收到错误码后请生成新的 UserSig 重新登录。
3. 用户在线情况下被踢,会在 TIMUserConfig 里面配置的 TIMUserStatusListener 监听器获取 onForceOffline 回调,收到回调后可以选择重新登录。
4. 用户离线状态下被踢,会在用户重新登录时收到 (ERR_IMSDK_KICKED_BY_OTHERS:6208) 错误码,此时需要再次调用 login 强制上线。
5. 如果当前是登录中,则本次登录无效,本次回调不会有任何返回,登录结果会通过第一次登录的回调返回,可以通过 getLoginStatus() 获取登录状态。
更多详情请参考 https://cloud.tencent.com/document/product/269/9229#.E7.94.A8.E6.88.B7.E7.8A.B6.E6.80.81.E5.8F.98.E6.9B.B4。
userID
- 用户标识userSig
- 该用户的userSigcallback
- 登录回调public void autoLogin(java.lang.String userID, TIMCallBack callback)
自动登录类似“记住密码”的功能,如果上一次已经成功登录,那么一段时间内都只需要传入用户名就可以完成登录。 相比于普通的 login 接口,该接口可以减少 IM SDK 向您的服务器索要 userSig 的频率, 既可以加快登录速度,又能减少你的 userSig 服务器压力,也在一定程度上降低了 userSig 泄漏的风险。 1. 首次登录之后,SDK 会把登录信息存在在本地,下次登录即可调用自动登录 2. 如果用户之前没有登录过,或则 APP 被卸载过,自动登录会报 ERR_NO_PREVIOUS_LOGIN:6026 错误,这个时候请调用 login 接口重新登录。
userID
- 用户标识callback
- 登录回调public void logout(TIMCallBack callback)
退出登录,如果切换账号,需要 logout 回调成功或者失败后才能再次 login,否则 login 可能会失败。
callback
- 登出回调public int getLoginStatus()
public java.lang.String getLoginUser()
public java.util.List<TIMConversation> getConversationList()
public TIMConversation getConversation(TIMConversationType type, java.lang.String conversationId)
type
- 会话类型参考 TIMConversationType
conversationId
- 会话 ID
public boolean deleteConversation(TIMConversationType type, java.lang.String conversationId)
type
- 会话类型参考 TIMConversationType
conversationId
- 会话 ID
public boolean deleteConversationAndLocalMsgs(TIMConversationType type, java.lang.String conversationId)
注意:本接口只能删除本地缓存的历史消息,无法删除云端保存的历史消息。
type
- 会话类型参考 TIMConversationType
conversationId
- 会话 ID
public void setOfflinePushToken(TIMOfflinePushToken token, TIMCallBack cb)
token 是各个手机厂商的推送服务对客户端的唯一标识,需要集成各个厂商的推送服务获取; bussid 是推送证书 ID,是在 IM 控制台上生成的, 具体步骤请参考 https://cloud.tencent.com/document/product/269/9234。
token
- 详情请参考 TIMOfflinePushToken
定义cb
- 回调public void setOfflinePushSettings(TIMOfflinePushSettings settings)
settings
- 详情请参考 TIMOfflinePushSettings
定义public void getOfflinePushSettings(TIMValueCallBack<TIMOfflinePushSettings> cb)
cb
- 回调@Deprecated public void setOfflinePushListener(TIMOfflinePushListener listener)
当 sdk 收到消息时会抛出一个组装好的 TIMOfflinePushNotification 格式的通知出来,您可以选择在适当的时候转换成 Android 标准的 Notification 弹通知出来。
listener
- 离线推送监听器,详见TIMOfflinePushListener
public void doBackground(TIMBackgroundParam param, TIMCallBack callBack)
APP 进后台的时候需要主动调用 doBackground ,这个时候后台知道 APP 的状态。 - 从5.0.1版本开始,如果配置了离线推送,调用此接口后,会收到厂商的离线推送通道下发的通知栏消息。
param
- 退后台参数callBack
- 回调public void doForeground(TIMCallBack callBack)
APP 切前台的时候需要主动调用 doForeground ,这个时候后台知道 APP 的状态。 - 从5.0.1版本开始,对应 doBackground,会停止厂商的离线推送。但如果应用被 kill,仍然可以正常接收离线推送。
callBack
- 回调public int initStorage(@NonNull java.lang.String userID, @NonNull TIMCallBack cb)
如过已经 login() 成功,请不要调用此函数,否则会导致各种异常问题。
userID
- 用户IDcb
- 回调public java.lang.String getVersion()
public void addMessageUpdateListener(TIMMessageUpdateListener listener)
listener
- public void removeMessageUpdateListener(TIMMessageUpdateListener listener)
listener
- public TIMNetworkStatus getNetworkStatus()
public long getServerTimeDiff()
public long getServerTime()