agora_chat_SDK 1.0.6
agora java chat SDK
| Public 成员函数 | 静态 Public 成员函数 | 静态 Public 属性 | 所有成员列表
io.agora.chat.ChatClient类 参考

interface  AppStateListener
 
interface  CheckResultListener
 
class  MyConnectionListener
 
class  MyMultiDeviceListener
 

Public 成员函数

void init (Context context, ChatOptions options)
 
void createAccount (String username, String password) throws ChatException
 
void login (String id, String password, final CallBack callback) throws IllegalArgumentException
 
void loginWithToken (String username, String token, final CallBack callback)
 
void loginWithAgoraToken (String username, String agoraToken, final CallBack callback)
 
void notifyTokenExpired (String response)
 
void renewToken (String newAgoraToken)
 
int logout (boolean unbindToken)
 
void logout (final boolean unbindToken, final CallBack callback)
 
void changeAppkey (String appkey) throws ChatException
 
void addConnectionListener (final ConnectionListener listener)
 
void removeConnectionListener (final ConnectionListener listener)
 
GroupManager groupManager ()
 
PushManager pushManager ()
 
ChatRoomManager chatroomManager ()
 
ChatManager chatManager ()
 
UserInfoManager userInfoManager ()
 
ContactManager contactManager ()
 
TranslationManager translationManager ()
 
PresenceManager presenceManager ()
 
ChatThreadManager chatThreadManager ()
 
Context getContext ()
 
synchronized String getCurrentUser ()
 
void getUserTokenFromServer (final String username, final String password, final ValueCallBack< String > callBack)
 
boolean isLoggedInBefore ()
 
boolean isConnected ()
 
boolean isLoggedIn ()
 
void setDebugMode (boolean debugMode)
 
boolean updateCurrentUserNick (String nickname) throws IllegalArgumentException, ChatException
 
void uploadLog (CallBack callback)
 
ChatOptions getOptions ()
 
String compressLogs () throws ChatException
 
void addMultiDeviceListener (MultiDeviceListener listener)
 
void removeMultiDeviceListener (MultiDeviceListener listener)
 
List< DeviceInfogetLoggedInDevicesFromServer (String username, String password) throws ChatException
 
void kickDevice (String username, String password, String resource) throws ChatException
 
void kickAllDevices (String username, String password) throws ChatException
 
void sendFCMTokenToServer (String fcmToken)
 
void sendHMSPushTokenToServer (String appId, String token)
 
void sendHMSPushTokenToServer (String token)
 
boolean isFCMAvailable ()
 
String getAccessToken ()
 
boolean isSdkInited ()
 
EMChatConfigPrivate getChatConfigPrivate ()
 
JSONObject getDeviceInfo ()
 
void check (String username, String password, final CheckResultListener listener)
 

静态 Public 成员函数

static ChatClient getInstance ()
 

静态 Public 属性

static final String TAG = "ChatClient"
 
static final String VERSION = "1.0.6"
 

详细描述

该类是 Chat SDK 的入口,负责登录、退出及连接管理等,由此可以获得其他模块的入口。

ChatManager chatManager = ChatClient.getInstance().chatManager();

成员函数说明

◆ addConnectionListener()

void io.agora.chat.ChatClient.addConnectionListener ( final ConnectionListener  listener)

设置 Chat 服务器连接监听。

参数
listenerChat 服务器连接监听。

◆ addMultiDeviceListener()

void io.agora.chat.ChatClient.addMultiDeviceListener ( MultiDeviceListener  listener)

添加多设备监听的接口。

参数
listenerMultiDeviceListener, MultiDeviceListener#onContactEvent(int, String, String) 联系人事件回调, MultiDeviceListener#onGroupEvent(int, String, List) 群组事件回调。

◆ changeAppkey()

void io.agora.chat.ChatClient.changeAppkey ( String  appkey) throws ChatException

修改 App Key,注意只有在未登录状态才能修改 App Key。修改 App Key 是为了方便你切换其他 App Key,切换后可以使用切换后的 App Key 测试,除了登出外,没有其他的限制。

也可以通过 ChatOptions#setAppKey(String) 设置 App Key,同样只有在未登录状态才能修改。

参数
appkeyApp Key,应用的唯一标识,不可为空。

◆ chatManager()

ChatManager io.agora.chat.ChatClient.chatManager ( )

获取聊天管理类,需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
聊天管理类。

◆ chatroomManager()

ChatRoomManager io.agora.chat.ChatClient.chatroomManager ( )

获取聊天室管理类,该方法需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
聊天室管理类。

◆ chatThreadManager()

ChatThreadManager io.agora.chat.ChatClient.chatThreadManager ( )

获取子区管理类,需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
Thread 管理类。

◆ check()

void io.agora.chat.ChatClient.check ( String  username,
String  password,
final CheckResultListener  listener 
)

服务诊断接口,流程如下:

1.校验用户名和密码; 2.从服务端获取 DNS 列表; 3.从服务端获取 token; 4.连接 chat 服务器; 5.断开连接(如果检查前已经有账户登录,则不执行该步骤)。

如果在诊断过程中产生了错误,该流程将会被打断。

参数
username用于服务诊断的用户名,即 user ID,如果已有账户登录,该用户名会被替换为已登录账户的用户名,以防止更改当前已登录账户 的信息,比如 token 等。
password密码,如果已有账户登录,该密码会被替换为已登录账户的密码。
listener诊断结果的回调。

Contains account-validation check, get-dns check, get-Token check, login check. So the EMAChatClient.CheckResultListener#onResult(int, int, String) callback will be called four times.

◆ compressLogs()

String io.agora.chat.ChatClient.compressLogs ( ) throws ChatException

压缩 log 文件,并返回压缩后的文件路径。强烈建议方法完成之后删除该压缩文件。

返回
压缩后的 log 文件路径。
异常
ChatException压缩文件失败报的错。

◆ contactManager()

ContactManager io.agora.chat.ChatClient.contactManager ( )

获取联系人管理类,需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
联系人管理类。

◆ createAccount()

void io.agora.chat.ChatClient.createAccount ( String  username,
String  password 
) throws ChatException

创建账号。

同步方法,会阻塞当前线程。

参数
username用户名,长度不超过 64 个字符。请确保你对该参数设值。支持的字符包括英文字母(a-z),数字(0-9),下划线(_),英文横线(-),英文句号(.)。该参数不区分大小写,大写字母会被自动转为小写字母。如果使用正则表达式设置该参数,则可以将表达式写为:^[a-zA-Z0-9_-]+$。
password密码,长度不超过 64 个字符。请确保你对该参数设值。
异常
ChatException如果该方法调用失败,会包含调用失败的原因。例如 username(账号),(password)密码为空,或者账号不符合要求。

◆ getAccessToken()

String io.agora.chat.ChatClient.getAccessToken ( )

从内存中获取身份认证 token。

在上传下载附件(语音,图片,文件等)时必须添加到请求 header 中,当出现任何异常时将返回 null, 可通过判断是否为 null 来检测是否有问题;如果为 null,在打开 EMLog 日志时,可以看到异常原因。

也可以通过 ChatOptions#getAccessToken() 获取,该方法需要从服务端获取 token,可以调用 ChatOptions#getAccessToken(boolean), 并传入 true

返回
身份认证 token。

◆ getCurrentUser()

synchronized String io.agora.chat.ChatClient.getCurrentUser ( )

获取当前登录用户的用户名。

返回
当前登录的用户。

◆ getLoggedInDevicesFromServer()

List< DeviceInfo > io.agora.chat.ChatClient.getLoggedInDevicesFromServer ( String  username,
String  password 
) throws ChatException

获取指定账号下登录的在线设备列表。

同步方法,会阻塞当前线程。

参数
username用户名。
password密码。
返回
在线设备列表。
异常
ChatException具体错误详见 Error

◆ getOptions()

ChatOptions io.agora.chat.ChatClient.getOptions ( )

获取 ChatOptions。

◆ getUserTokenFromServer()

void io.agora.chat.ChatClient.getUserTokenFromServer ( final String  username,
final String  password,
final ValueCallBack< String >  callBack 
)

根据用户名和密码获取 token。

参数
username已经注册过的用户名。
password密码。
callBack结果回调。

◆ groupManager()

GroupManager io.agora.chat.ChatClient.groupManager ( )

获取群组管理类,需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
群组管理类。

◆ init()

void io.agora.chat.ChatClient.init ( Context  context,
ChatOptions  options 
)

初始化 SDK。

请确保在主进程中进行初始化。

参数
context上下文,不可为空。
options配置项,不可为空,见 ChatOptions

◆ isConnected()

boolean io.agora.chat.ChatClient.isConnected ( )

检查 SDK 是否连接到 Chat 服务器。

返回
返回是否连接到 Chat 服务器的结果。
  • true 表示已经连接到 Chat 服务器。
  • false 表示没有连接到 Chat 服务器。

◆ isFCMAvailable()

boolean io.agora.chat.ChatClient.isFCMAvailable ( )

检查 FCM 推送是否可用。

返回
- true 表示 FCM 推送可用;
  • false 表示 FCM 推送不可用。

◆ isLoggedIn()

boolean io.agora.chat.ChatClient.isLoggedIn ( )

检查用户是否登录。

返回
返回是否登录的结果。
  • true 表示已经登录。
  • false 表示没有登录。

◆ isLoggedInBefore()

boolean io.agora.chat.ChatClient.isLoggedInBefore ( )

返回是否登录过。

如果登录成功后未调用 logout 方法,这个方法的返回值一直是 true

参考: 如果需要判断当前是否连接到服务器,请使用 isConnected() 方法。

if(ChatClient.getInstance().isLoggedInBefore()){
// enter main activity
}else{
// enter login activity
}
返回
返回是否登录过的结果。
  • true 表示之前登录过。
  • false 表示之前未登录过或者已经调用过 logout() 方法。

◆ isSdkInited()

boolean io.agora.chat.ChatClient.isSdkInited ( )

判断 SDK 是否已经初始化完毕。

返回
- true:SDK 已经初始化完毕。
  • false:SDK 尚未初始化完毕。

◆ kickAllDevices()

void io.agora.chat.ChatClient.kickAllDevices ( String  username,
String  password 
) throws ChatException

将指定账号下的所有设备都踢下线。

同步方法,会阻塞当前线程。

参数
username用户名。
password密码。
异常
ChatException如果有异常会抛出,包括错误码和错误描述,错误码详见 Error

◆ kickDevice()

void io.agora.chat.ChatClient.kickDevice ( String  username,
String  password,
String  resource 
) throws ChatException

在指定账号下,根据设备 ID,将指定设备下线, 设备 ID:DeviceInfo#getResource()

同步方法,会阻塞当前线程。

参数
username账户名称。
password该账户密码。
resource设备 ID, 见 DeviceInfo#getResource()
异常
ChatException如果有异常会在此抛出,包括错误码和错误信息,详见 Error

◆ login()

void io.agora.chat.ChatClient.login ( String  id,
String  password,
final CallBack  callback 
) throws IllegalArgumentException

使用密码登录服务器。

参考: 通过 token 登录服务器的方法见 loginWithToken(String, String, CallBack)

异步方法。

参数
id用户 ID。 不能为空。
password用户密码。 不能为空。
callbackEMCallback 回调函数。 不能为空,登录的结果将通过 callback 返回。
异常
IllegalArgumentException用户 ID,密码,callback 及 App Key 为空会抛出异常。

◆ loginWithAgoraToken()

void io.agora.chat.ChatClient.loginWithAgoraToken ( String  username,
String  agoraToken,
final CallBack  callback 
)

通过用户 ID 和声网 Agora token 登录 chat 服务器。该方法支持自动登录。

参考: 通过用户 ID 和密码登录 chat 服务器,见login(String, String, CallBack)

异步方法。

参数
username用户 ID。 不能为空。
agoraToken验证 Agora token。 不能为空。
callbackEMCallback 回调函数。 不能为空。登录的结果将通过 callback 返回。
异常
RuntimeExceptionApp Key 为空会报运行异常。
IllegalArgumentException用户 ID,token 及 callback 为空,会抛出异常。

◆ loginWithToken()

void io.agora.chat.ChatClient.loginWithToken ( String  username,
String  token,
final CallBack  callback 
)

通过 token 登录服务器。该方法支持自动登录。

参考: 通过密码登录服务器,见 login(String, String, CallBack)

异步方法。

参数
username用户 ID。 不能为空。
token验证 token。 不能为空。
callbackEMCallback 回调函数。 不能为空,登录的结果将通过 callback 返回。
异常
RuntimeExceptionApp Key 为空回报运行异常。
IllegalArgumentException用户 ID,token 及 callback 为空,会抛出异常。

◆ logout() [1/2]

int io.agora.chat.ChatClient.logout ( boolean  unbindToken)

退出登录并返回退出结果。

同步方法,会阻塞当前线程。

参数
unbindToken是否解绑 token。
  • true 表示需要退出时解绑设备 token
  • false 表示退出时不解绑设备 token
返回
- 返回值为 0,即 Error#EM_NO_ERROR,表示退出登录成功;
  • 其他值为退出失败,详见 Error

◆ logout() [2/2]

void io.agora.chat.ChatClient.logout ( final boolean  unbindToken,
final CallBack  callback 
)

登出聊天服务器。

异步方法。

参数
unbindToken是否解绑 token。
  • true 表示需要退出时解绑设备 token
  • false 表示退出时不解绑设备 token
callback方法完成的回调,包含调用失败的原因。

◆ notifyTokenExpired()

void io.agora.chat.ChatClient.notifyTokenExpired ( String  response)

通知 token 过期,会通过 ChatClient 回调给 connectionListener 过期事件。

参数
response请求返回的结果。

◆ pushManager()

PushManager io.agora.chat.ChatClient.pushManager ( )

获取推送管理类,需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
推送管理类。

◆ removeConnectionListener()

void io.agora.chat.ChatClient.removeConnectionListener ( final ConnectionListener  listener)

移除 Chat 服务器连接监听。

参数
listenerChat 服务器连接监听。

◆ removeMultiDeviceListener()

void io.agora.chat.ChatClient.removeMultiDeviceListener ( MultiDeviceListener  listener)

删除多设备监听的接口。

参数
listenerMultiDeviceListener

◆ renewToken()

void io.agora.chat.ChatClient.renewToken ( String  newAgoraToken)

当用户在声网 token 登录状态时,且在 ConnectionListener 实现类中收到 token 即将过期事件的回调通知可以调用这个 API 来更新 token,避免因 token 失效产生的未知问题。

参数
newAgoraToken声网 token。

◆ sendFCMTokenToServer()

void io.agora.chat.ChatClient.sendFCMTokenToServer ( String  fcmToken)

上传 FCM token 至服务器。

token 可以被上传的前提条件有: 1.被上传的 token 不为空; 2.当前已有用户登录; 3.当前设备支持 Google 推送; 4.Google 推送类型为 FCM io.agora.push.PushType#FCM

设置推送类型为 FCM 的接口为 ChatOptions#setFCMNumber(String),即设置了 FCM number 则推送类型为 FCM。

参数
fcmToken要上传的 token。

◆ sendHMSPushTokenToServer() [1/2]

void io.agora.chat.ChatClient.sendHMSPushTokenToServer ( String  appId,
String  token 
)

发送华为推送 token 到服务器。

参数
appId华为 AppId。
token华为推送 token。
弃用:
请使用 sendHMSPushTokenToServer(String) 代替。

◆ sendHMSPushTokenToServer() [2/2]

void io.agora.chat.ChatClient.sendHMSPushTokenToServer ( String  token)

发送华为推送 token 到服务器。

参数
token华为推送 token。

◆ setDebugMode()

void io.agora.chat.ChatClient.setDebugMode ( boolean  debugMode)

设置是否输出调试信息,在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

参数
debugMode- true:SDK 会在 log 里输出调试信息;
  • false:不会输出调试信息。

◆ updateCurrentUserNick()

boolean io.agora.chat.ChatClient.updateCurrentUserNick ( String  nickname) throws IllegalArgumentException, ChatException

更新当前用户的推送昵称,用于推送时在通知栏展示。

弃用:
从 V3.3.3 废弃,使用 PushManager#updatePushNickname(String) 代替。

需要注意用户属性中的昵称跟这里推送昵称是独立的。

建议从用户服务器获取到用户信息后,将用户属性中的昵称更新到 Chat 服务器; 当个人信息中昵称发生变化的时候,请同步更新到 Chat 服务器,防止出现显示差异。

参数
nickname推送昵称。不能为空,长度不超过 100 个字符。

◆ uploadLog()

void io.agora.chat.ChatClient.uploadLog ( CallBack  callback)

上传本地的日志。

同步方法,会阻塞当前线程。

参数
callback预留参数。

◆ userInfoManager()

UserInfoManager io.agora.chat.ChatClient.userInfoManager ( )

获取用户信息管理类,需要在 ChatClient 初始化完成后调用,详见 init(Context, ChatOptions)

返回
用户信息管理类。

该类的文档由以下文件生成: