hyphenate_SDK4.0 4.5.0
hyphenate java IM SDK
Public 成员函数 | 所有成员列表
com.hyphenate.chat.EMClient类 参考

Public 成员函数

synchronized void init (Context context, EMOptions options)
 
void createAccount (String username, String password) throws HyphenateException
 
void login (String id, String password, @NonNull final EMCallBack callback)
 
void loginWithToken (String username, String token, @NonNull final EMCallBack callback)
 
void loginWithAgoraToken (String username, String agoraToken, @NonNull final EMCallBack callback)
 
void notifyTokenExpired (String response)
 
void renewToken (String newAgoraToken)
 
void renewToken (String newToken, @NonNull EMCallBack callback)
 
int logout (boolean unbindToken)
 
void logout (final boolean unbindToken, final EMCallBack callback)
 
void changeAppkey (String appkey) throws HyphenateException
 
void addConnectionListener (final EMConnectionListener listener)
 
void removeConnectionListener (final EMConnectionListener listener)
 
void addLogListener (final EMLogListener listener)
 
void removeLogListener (final EMLogListener listener)
 
EMGroupManager groupManager ()
 
EMPushManager pushManager ()
 
EMChatRoomManager chatroomManager ()
 
EMChatManager chatManager ()
 
EMUserInfoManager userInfoManager ()
 
EMContactManager contactManager ()
 
EMChatThreadManager chatThreadManager ()
 
synchronized String getCurrentUser ()
 
void getUserTokenFromServer (final String username, final String password, final EMValueCallBack< String > callBack)
 
boolean isLoggedInBefore ()
 
boolean isConnected ()
 
boolean isLoggedIn ()
 
void setDebugMode (boolean debugMode)
 
void uploadLog (EMCallBack callback)
 
EMOptions getOptions ()
 
String compressLogs () throws HyphenateException
 
void addMultiDeviceListener (EMMultiDeviceListener listener)
 
void removeMultiDeviceListener (EMMultiDeviceListener listener)
 
List< EMDeviceInfogetLoggedInDevicesFromServer (String username, String password) throws HyphenateException
 
List< EMDeviceInfogetLoggedInDevicesFromServerWithToken (@NonNull String username, @NonNull String token) throws HyphenateException
 
void kickDevice (String username, String password, String resource) throws HyphenateException
 
void kickDeviceWithToken (@NonNull String username, @NonNull String token, String resource) throws HyphenateException
 
void kickAllDevices (String username, String password) throws HyphenateException
 
void kickAllDevicesWithToken (@NonNull String username, @NonNull String token) throws HyphenateException
 
void sendFCMTokenToServer (String fcmToken)
 
void sendHMSPushTokenToServer (String token)
 
void sendHonorPushTokenToServer (String token)
 
boolean isFCMAvailable ()
 
String getAccessToken ()
 
boolean isSdkInited ()
 
void check (String username, String password, final CheckResultListener listener)
 

详细描述

Chat 客户端类。该类是 Chat SDK 的入口,负责登录、登出及管理 SDK 与 chat 服务器之间的连接。

EMChatManager chatManager = EMClient.getInstance().chatManager();

成员函数说明

◆ addConnectionListener()

void com.hyphenate.chat.EMClient.addConnectionListener ( final EMConnectionListener  listener)

设置连接状态监听器。

该监听器用于监听 Chat app 与 Chat 服务器之间的连接。

参数
listener要添加的连接状态监听器。

◆ addLogListener()

void com.hyphenate.chat.EMClient.addLogListener ( final EMLogListener  listener)

设置日志回调监听器。

参数
listener日志回调监听,EMLogListener#onLog(String)

◆ addMultiDeviceListener()

void com.hyphenate.chat.EMClient.addMultiDeviceListener ( EMMultiDeviceListener  listener)

添加多设备监听器。

参数
listener要添加的多设备监听器。 详见 EMMultiDeviceListener, EMMultiDeviceListener#onContactEvent(int, String, String) 联系人事件回调, EMMultiDeviceListener#onGroupEvent(int, String, List) 群组事件回调。

◆ changeAppkey()

void com.hyphenate.chat.EMClient.changeAppkey ( String  appkey) throws HyphenateException

更新 App Key。

Note

  • App Key 用于控制对你的 app 的 Chat 服务的访问,只有在未登录状态才能修改 App Key。
  • 修改 App Key 是为了方便你切换到其他 App Key。
  • 你可以在 Console 上获取 App Key。
  • 也通过 EMOptions#setAppKey(String) 设置 App Key,同样只有在未登录状态才能修改。
参数
appkeyApp Key,应用的唯一标识,不可为空。

◆ chatManager()

EMChatManager com.hyphenate.chat.EMClient.chatManager ( )

获取聊天管理类。

该方法需要在 EMClient 初始化完成后调用,详见 init(Context, EMOptions)

返回
聊天管理类。

◆ chatroomManager()

EMChatRoomManager com.hyphenate.chat.EMClient.chatroomManager ( )

获取聊天室管理类。

该方法需要在 EMClient 初始化完成后调用,详见 init(Context, EMOptions)

返回
聊天室管理类。

◆ chatThreadManager()

EMChatThreadManager com.hyphenate.chat.EMClient.chatThreadManager ( )

获取子区管理类。

需要在 EMClient 初始化完成后调用,详见 init(Context, EMOptions)

返回
Thread 管理类。

◆ check()

void com.hyphenate.chat.EMClient.check ( String  username,
String  password,
final CheckResultListener  listener 
)

诊断 Chat 服务。

服务诊断流程如下:

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

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

参数
username用于服务诊断的用户 ID,如果已有账户登录,该用户 ID 会被替换为已登录账户的用户 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 com.hyphenate.chat.EMClient.compressLogs ( ) throws HyphenateException

压缩调试日志文件。

强烈建议方法完成之后删除该压缩文件。

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

◆ contactManager()

EMContactManager com.hyphenate.chat.EMClient.contactManager ( )

获取联系人管理类。

需要在 EMClient 初始化完成后调用,详见 init(Context, EMOptions)

返回
联系人管理类。

◆ createAccount()

void com.hyphenate.chat.EMClient.createAccount ( String  username,
String  password 
) throws HyphenateException

创建账号。

该方法不推荐使用,建议调用相应的 RESTful 方法。

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

参数
username用户 ID。 该参数必填。用户 ID 不能超过 64 个字符,支持以下类型的字符:
  • 26 个小写英文字母 a-z;
  • 26 个大写英文字母 A-Z;
  • 10 个数字 0-9;
  • "_", "-", "."
  • 如果使用正则表达式,则可以将表达式写为:^[a-zA-Z0-9_-]+$。

用户 ID 不区分大小写,大写字母会自动转换为小写字母。

用户的电子邮件地址和 UUID 不能作为用户 ID。

可通过以下格式的正则表达式设置用户 ID:^[a-zA-Z0-9_-]+$。

参数
password密码,长度不超过 64 个字符,必填。
异常
HyphenateException如果该方法调用失败,会包含调用失败的原因。例如 username(账号),(password)密码为空,或者账号不符合要求。

◆ getAccessToken()

String com.hyphenate.chat.EMClient.getAccessToken ( )

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

在上传下载附件(语音,图片,文件等)时必须将 token 添加到请求 header 中,当出现任何异常时将返回 null

如果为 null,在打开 EMLog 日志时,可以看到异常原因。

也可以通过 EMOptions#getAccessToken(boolean) 方法传入 true从服务端获取 token。

返回
身份认证 token。

◆ getCurrentUser()

synchronized String com.hyphenate.chat.EMClient.getCurrentUser ( )

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

返回
当前登录的用户。

◆ getLoggedInDevicesFromServer()

List< EMDeviceInfo > com.hyphenate.chat.EMClient.getLoggedInDevicesFromServer ( String  username,
String  password 
) throws HyphenateException

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

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

参数
username用户 ID。
password密码。
返回
在线登录设备列表。
异常
HyphenateException具体错误详见 EMError

◆ getLoggedInDevicesFromServerWithToken()

List< EMDeviceInfo > com.hyphenate.chat.EMClient.getLoggedInDevicesFromServerWithToken ( @NonNull String  username,
@NonNull String  token 
) throws HyphenateException

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

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

参数
username用户 ID。
token用户 token。
返回
在线登录设备列表。
异常
HyphenateException具体错误详见 EMError

◆ getOptions()

EMOptions com.hyphenate.chat.EMClient.getOptions ( )

获取 SDK 的各种配置选项。

◆ getUserTokenFromServer()

void com.hyphenate.chat.EMClient.getUserTokenFromServer ( final String  username,
final String  password,
final EMValueCallBack< String >  callBack 
)

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

参数
username用户 ID。
password密码。
callBack结果回调。

◆ groupManager()

EMGroupManager com.hyphenate.chat.EMClient.groupManager ( )

获取群组管理类。

该方法需在 EMClient 初始化完成后调用,详见 init(Context, EMOptions)

返回
群组管理类。

◆ init()

synchronized void com.hyphenate.chat.EMClient.init ( Context  context,
EMOptions  options 
)

初始化 SDK。

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

参数
context上下文,必填。
options配置项,必填。详见 EMOptions

◆ isConnected()

boolean com.hyphenate.chat.EMClient.isConnected ( )

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

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

◆ isFCMAvailable()

boolean com.hyphenate.chat.EMClient.isFCMAvailable ( )

检查 FCM 推送是否可用。

返回
FCM 推送是否可用:
  • true:可用;
  • false:不可用。

◆ isLoggedIn()

boolean com.hyphenate.chat.EMClient.isLoggedIn ( )

检查用户是否登录 Chat 服务。

返回
是否登录 Chat 服务。
  • true:是。
  • false:否。

◆ isLoggedInBefore()

boolean com.hyphenate.chat.EMClient.isLoggedInBefore ( )

查询是否登录过。

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

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

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

◆ isSdkInited()

boolean com.hyphenate.chat.EMClient.isSdkInited ( )

检查 SDK 是否已初始化完毕。

返回
SDK 是否已初始化完毕:
  • true:是。
  • false:否。

◆ kickAllDevices()

void com.hyphenate.chat.EMClient.kickAllDevices ( String  username,
String  password 
) throws HyphenateException

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

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

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

◆ kickAllDevicesWithToken()

void com.hyphenate.chat.EMClient.kickAllDevicesWithToken ( @NonNull String  username,
@NonNull String  token 
) throws HyphenateException

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

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

参数
username用户 ID。
token用户 token。
异常
HyphenateException如果有异常会抛出,包括错误码和错误描述,错误码详见 EMError

◆ kickDevice()

void com.hyphenate.chat.EMClient.kickDevice ( String  username,
String  password,
String  resource 
) throws HyphenateException

将指定账号从登录的指定设备踢下线。

可通过 EMDeviceInfo#getResource() 方法获取设备 ID。

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

参数
username用户 ID。
password用户的密码。
resource设备 ID, 见 EMDeviceInfo#getResource()
异常
HyphenateException如果有异常会在此抛出,包括错误码和错误信息,详见 EMError

◆ kickDeviceWithToken()

void com.hyphenate.chat.EMClient.kickDeviceWithToken ( @NonNull String  username,
@NonNull String  token,
String  resource 
) throws HyphenateException

将指定账号从登录的指定设备踢下线。

可通过 EMDeviceInfo#getResource() 方法获取设备 ID。

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

参数
username用户 ID。
token用户 token。
resource设备 ID, 见 EMDeviceInfo#getResource()
异常
HyphenateException如果有异常会在此抛出,包括错误码和错误信息,详见 EMError

◆ login()

void com.hyphenate.chat.EMClient.login ( String  id,
String  password,
@NonNull final EMCallBack  callback 
)

使用密码登录服务器。

推荐使用 loginWithToken(String, String, EMCallBack) 方法通过 token 登录服务器。

异步方法。

参数
id用户 ID,必填。
password用户密码,必填。
callback登录回调,必填。登录的结果将通过回调返回。

◆ loginWithAgoraToken()

void com.hyphenate.chat.EMClient.loginWithAgoraToken ( String  username,
String  agoraToken,
@NonNull final EMCallBack  callback 
)

通过用户 ID 和声网 Agora token 登录 chat 服务器。

该方法支持自动登录。

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

异步方法。

参数
username用户 ID。不能为空。
agoraToken验证 Agora token。不能为空。
callbackEMCallback 回调函数。不能为空。登录的结果将通过 callback 返回。
弃用:
已废弃,请使用 loginWithToken(String, String, EMCallBack) 替代.

◆ loginWithToken()

void com.hyphenate.chat.EMClient.loginWithToken ( String  username,
String  token,
@NonNull final EMCallBack  callback 
)

通过 token 登录服务器。

该方法支持自动登录。

通过密码登录服务器,见 login(String, String, EMCallBack)

异步方法。

参数
username用户 ID,必填。
token验证 token,必填。
callback登录回调,返回登录结果。必填且不能为 null。登录的结果将通过 callback 返回。

◆ logout() [1/2]

int com.hyphenate.chat.EMClient.logout ( boolean  unbindToken)

退出登录。

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

参数
unbindToken登出时是否解绑 token。
  • true:是;
  • false:否
返回
登出结果:

◆ logout() [2/2]

void com.hyphenate.chat.EMClient.logout ( final boolean  unbindToken,
final EMCallBack  callback 
)

登出聊天服务器。

异步方法。

参数
unbindToken是否解绑 token。
  • true:是;
  • false:否。
callback方法完成的回调,包含调用失败的原因。

◆ notifyTokenExpired()

void com.hyphenate.chat.EMClient.notifyTokenExpired ( String  response)

通知 token 过期。

SDK 将token 过期事件回调给 connectionListener。如果用户注册了 connectionListener,则会收到 token 过期事件。

参数
response请求返回的结果。

◆ pushManager()

EMPushManager com.hyphenate.chat.EMClient.pushManager ( )

获取推送管理类。

该方法需在 EMClient 初始化完成后调用。详见 init(Context, EMOptions)

返回
推送管理类。

◆ removeConnectionListener()

void com.hyphenate.chat.EMClient.removeConnectionListener ( final EMConnectionListener  listener)

移除 Chat 服务器连接监听。

参数
listener要移除的 Chat 服务器连接监听。

◆ removeLogListener()

void com.hyphenate.chat.EMClient.removeLogListener ( final EMLogListener  listener)

移除日志回调监听。

参数
listener日志回调监听。

◆ removeMultiDeviceListener()

void com.hyphenate.chat.EMClient.removeMultiDeviceListener ( EMMultiDeviceListener  listener)

移除多设备监听器。

参数
listener要移除的多设备监听器。见 EMMultiDeviceListener

◆ renewToken() [1/2]

void com.hyphenate.chat.EMClient.renewToken ( String  newAgoraToken)

更新 Agora token。

当用户利用声网 token 登录的情况下在 EMConnectionListener 类中收到 token 即将过期事件的回调通知时,可调用该方法更新 token,避免因 token 失效产生的未知问题。

参数
newAgoraToken声网 token。
弃用:
已废弃,请使用 renewToken(String, EMCallBack) 替代.

◆ renewToken() [2/2]

void com.hyphenate.chat.EMClient.renewToken ( String  newToken,
@NonNull EMCallBack  callback 
)

更新 token。

当用户利用 token 登录的情况下在 EMConnectionListener 类中收到 token 即将过期事件的回调通知时,可调用该方法更新 token,避免因 token 失效产生的未知问题。

参数
newToken新token。
callbackEMCallback 回调函数,不能为空,更新token的结果将通过callback返回

◆ sendFCMTokenToServer()

void com.hyphenate.chat.EMClient.sendFCMTokenToServer ( String  fcmToken)

上传 FCM token 至 Chat 服务器。

上传 token 需满足以下条件:

  • 被上传的 token 不为空;
  • 当前已有用户登录;
  • 当前设备支持 Google 推送;
  • Google 推送类型为 FCM EMPushType#FCM
参数
fcmToken要上传的 token。

◆ sendHMSPushTokenToServer()

void com.hyphenate.chat.EMClient.sendHMSPushTokenToServer ( String  token)

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

参数
token华为推送 token。

◆ sendHonorPushTokenToServer()

void com.hyphenate.chat.EMClient.sendHonorPushTokenToServer ( String  token)

发送荣耀推送 token 到服务器。

参数
token荣耀推送 token。

◆ setDebugMode()

void com.hyphenate.chat.EMClient.setDebugMode ( boolean  debugMode)

设置是否输出调试信息。

EMClient 初始化完成后调用,详见 init(Context, EMOptions)

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

◆ uploadLog()

void com.hyphenate.chat.EMClient.uploadLog ( EMCallBack  callback)

上传本地日志。

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

参数
callback预留参数。

◆ userInfoManager()

EMUserInfoManager com.hyphenate.chat.EMClient.userInfoManager ( )

获取用户信息管理类。

需要在 EMClient 初始化完成后调用,详见 init(Context, EMOptions)

返回
用户信息管理类。

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