hyphenate_SDK3.0  3.8.5
hyphenatejavaIMSDK
| Public 成员函数 | 静态 Public 成员函数 | 静态 Public 属性 | 所有成员列表
com.hyphenate.chat.EMClient类 参考

interface  AppStateListener
 
interface  CheckResultListener
 
class  MyConnectionListener
 
class  MyMultiDeviceListener
 

Public 成员函数

void init (Context context, EMOptions options)
 
void createAccount (String username, String password) throws HyphenateException
 
void login (String id, String password, final EMCallBack callback) throws IllegalArgumentException
 
void loginWithToken (String username, String token, final 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)
 
EMGroupManager groupManager ()
 
EMPushManager pushManager ()
 
EMChatRoomManager chatroomManager ()
 
EMChatManager chatManager ()
 
EMUserInfoManager userInfoManager ()
 
EMContactManager contactManager ()
 
Context getContext ()
 
synchronized String getCurrentUser ()
 
void getUserTokenFromServer (final String username, final String password, final EMValueCallBack< String > callBack)
 
boolean isLoggedInBefore ()
 
boolean isConnected ()
 
void setDebugMode (boolean debugMode)
 
boolean updateCurrentUserNick (String nickname) throws IllegalArgumentException, HyphenateException
 
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
 
void kickDevice (String username, String password, String resource) throws HyphenateException
 
void kickAllDevices (String username, String password) throws HyphenateException
 
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 EMClient getInstance ()
 

静态 Public 属性

static final String TAG = "EMClient"
 
static final String VERSION = "3.8.5"
 

详细描述

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

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

成员函数说明

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

设置chat服务器连接监听

参数
listenerchat服务器连接监听 EMConnectionListener#onConnected()表示与chat服务器连接成功 EMConnectionListener#onDisconnected(int)表示与chat服务器断开连接, 参数表示错误码,详见EMError
void com.hyphenate.chat.EMClient.addMultiDeviceListener ( EMMultiDeviceListener  listener)

添加多设备监听的接口

参数
listenerEMMultiDeviceListener, EMMultiDeviceListener#onContactEvent(int, String, String)联系人事件回调, EMMultiDeviceListener#onGroupEvent(int, String, List)群组事件回调
void com.hyphenate.chat.EMClient.changeAppkey ( String  appkey) throws HyphenateException

更改appkey 只有在未登录状态才能修改appkey 也可以通过EMOptions#setAppKey(String)设置appkey,同样只有在未登录状态才能修改

参数
appkey不可为空
EMChatManager com.hyphenate.chat.EMClient.chatManager ( )

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

返回
聊天管理类
EMChatRoomManager com.hyphenate.chat.EMClient.chatroomManager ( )

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

返回
聊天室管理类
void com.hyphenate.chat.EMClient.check ( String  username,
String  password,
final CheckResultListener  listener 
)

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

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

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

参数
username用于服务诊断的用户名,如果已有账户登录,该用户名会被替换为已登录账户的用户名,以防止更改当前已登录账户 的信息,比如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.

String com.hyphenate.chat.EMClient.compressLogs ( ) throws HyphenateException

压缩log文件,并返回压缩后的文件路径

返回
压缩后的log文件路径
异常
HyphenateException压缩文件失败报的错
EMContactManager com.hyphenate.chat.EMClient.contactManager ( )

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

返回
联系人管理类
void com.hyphenate.chat.EMClient.createAccount ( String  username,
String  password 
) throws HyphenateException

创建账号

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

参数
username账号,不可为空,可以是字母/数字/下划线/横线/英文句号,正则为"^[a-zA-Z0-9_.-]+$", 其他的都不允许。如果是大写字母会自动转成小写。长度不可超过64个字符长度。
password密码,不可为空。长度不可超过64个字符长度。
异常
HyphenateException{
参数
username}账号,{
String com.hyphenate.chat.EMClient.getAccessToken ( )

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

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

返回
身份认证token
synchronized String com.hyphenate.chat.EMClient.getCurrentUser ( )

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

返回
当前登录的用户
List<EMDeviceInfo> com.hyphenate.chat.EMClient.getLoggedInDevicesFromServer ( String  username,
String  password 
) throws HyphenateException

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

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

参数
username用户名
password密码
返回
在线设备列表
异常
HyphenateException具体错误详见EMError
EMOptions com.hyphenate.chat.EMClient.getOptions ( )

获取EMOptions

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

根据用户名和密码获取token

参数
username已经注册过的用户名
password密码
callBack结果回调 EMValueCallBack#onSuccess(Object)表示请求成功的回调,onSuccess中的参数即为返回的token EMValueCallBack#onError(int, String)表示请求失败的回调,第一个参数是错误码, 第二个参数是错误描述
EMGroupManager com.hyphenate.chat.EMClient.groupManager ( )

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

返回
群组管理类
void com.hyphenate.chat.EMClient.init ( Context  context,
EMOptions  options 
)

初始化SDK。 需要在主进程中进行初始化。

参数
context上下文,不可为空
options配置项,不可为空,见EMOptions
boolean com.hyphenate.chat.EMClient.isConnected ( )

检查是否连接到chat服务器

返回
返回是否连接到chat服务器的结果 true表示已经连接到chat服务器 false表示没有连接到chat服务器
boolean com.hyphenate.chat.EMClient.isFCMAvailable ( )

检查FCM 推送是否可用

返回
返回 true表示FCM 推送可用;返回 false表示FCM 推送不可用
boolean com.hyphenate.chat.EMClient.isLoggedInBefore ( )

返回是否登录过 登录成功过没调logout方法,这个方法的返回值一直是true 如果需要判断当前是否连接到服务器,请使用isConnected()方法

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

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

返回
SDK是否已经初始化完毕
void com.hyphenate.chat.EMClient.kickAllDevices ( String  username,
String  password 
) throws HyphenateException

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

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

参数
username用户名
password密码
异常
HyphenateException错误码详见EMError
void com.hyphenate.chat.EMClient.kickDevice ( String  username,
String  password,
String  resource 
) throws HyphenateException

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

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

参数
username账户名称
password该账户密码
resource设备ID, 见EMDeviceInfo#getResource()
异常
HyphenateException错误码详见EMError
void com.hyphenate.chat.EMClient.login ( String  id,
String  password,
final EMCallBack  callback 
) throws IllegalArgumentException

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

异步方法

参数
id用户id 不能为空
password用户密码 不能为空
callbackEMCallback回调函数 不能为空,登录的结果将通过callback返回。
异常
IllegalArgumentException用户id,密码,callback及appkey为空会抛出异常。
void com.hyphenate.chat.EMClient.loginWithToken ( String  username,
String  token,
final EMCallBack  callback 
)

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

异步方法

参数
username用户id 不能为空
token验证token 不能为空
callbackEMCallback回调函数 不能为空,登录的结果将通过callback返回
异常
RuntimeExceptionappkey为空回报运行异常
IllegalArgumentException用户id,token及callbak为空,会抛出异常
int com.hyphenate.chat.EMClient.logout ( boolean  unbindToken)

退出登录并返回退出结果

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

参数
unbindToken是否解绑token true表示需要退出时解绑设备token false表示退出时不解绑设备token
返回
返回值为0,即EMError#EM_NO_ERROR,表示退出登录成功;其他值为退出失败,详见EMError
void com.hyphenate.chat.EMClient.logout ( final boolean  unbindToken,
final EMCallBack  callback 
)

登出聊天服务器

异步方法

参数
unbindToken是否解绑token true表示需要退出时解绑设备token false表示退出时不解绑设备token
callbackEMCallback回调 EMCallBack#onSuccess()表示退出登录成功的回调 EMCallBack#onError(int, String)表示退出登录失败的回调, 第一个参数代表错误码,见EMError,第二个参数代表错误描述
EMPushManager com.hyphenate.chat.EMClient.pushManager ( )

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

返回
推送管理类
void com.hyphenate.chat.EMClient.removeConnectionListener ( final EMConnectionListener  listener)

移除chat服务器连接监听

参数
listenerChat服务器连接监听
void com.hyphenate.chat.EMClient.removeMultiDeviceListener ( EMMultiDeviceListener  listener)

删除多设备监听的接口

参数
listenerEMMultiDeviceListener
void com.hyphenate.chat.EMClient.sendFCMTokenToServer ( String  fcmToken)

上传FCM token至服务器

token可以被上传的前提条件有:
1.被上传的token不为空
2.当前已有用户登录
3.当前设备支持google推送
4.google推送类型为FCM com.hyphenate.push.EMPushType#FCM
设置推送类型为FCM的接口为EMOptions#setFCMNumber(String),即设置了FCM number则推送类型为FCM
参数
fcmToken要上传的token
void com.hyphenate.chat.EMClient.sendHMSPushTokenToServer ( String  appId,
String  token 
)

发送华为推送 token 到服务器

参数
appId华为 appId
token华为推送 token
弃用:
使用 sendHMSPushTokenToServer(String) 代替
void com.hyphenate.chat.EMClient.sendHMSPushTokenToServer ( String  token)

发送华为推送 token 到服务器

参数
token华为推送token
void com.hyphenate.chat.EMClient.setDebugMode ( boolean  debugMode)

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

参数
debugMode传入true,SDK会在log里输出调试信息;传入false则不会输出调试信息
boolean com.hyphenate.chat.EMClient.updateCurrentUserNick ( String  nickname) throws IllegalArgumentException, HyphenateException

更新当前用户的推送昵称,用于推送时在通知栏展示 现推荐使用EMPushManager#updatePushNickname(String)代替 需要与用户属性中的昵称区分开 建议从用户服务器获取到用户信息后,将用户属性中的昵称更新到chat服务器; 当个人信息中昵称发生变化的时候,也要同步更新到chat服务器,防止出现显示差异

参数
nickname昵称 不能为空,长度不超过100个字符
弃用:
从V3.3.3废弃,使用 EMPushManager#updatePushNickname(String) 代替
void com.hyphenate.chat.EMClient.uploadLog ( EMCallBack  callback)

上传本地的日志

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

参数
callback回调方法 此处没有用到此回调方法
EMUserInfoManager com.hyphenate.chat.EMClient.userInfoManager ( )

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

返回
用户信息管理类

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