如果你是第一次集成融云,你会被融云的套路暂时摸不着头脑,比如环信的集成是账号密码登陆会给你返回一个ID,
作者:XINHAO_HAN
区别:
环信:提供:账号,密码 返回ID,而这个账号密码你是要提供给环信的
RongCloud:是账号密码你自己管理,RongCloud不管理你的账号密码,在你用自己的账号和UserId去获取一个Token,然后在你自己的服务器判断账号密码是否正确,正确之后再返回该用户的Token,
RongCloud官网:
Android IMLib SDK 开发指南
http://www.rongcloud.cn/docs/android_imlib.html#prepare_get_token
API 调试
https://developer.rongcloud.cn/apitool/9SuAwVqM5w1IiBPsthM=
简单的说一下集成过程,对于第一次集成RongCloud
导入所有依赖包(界面通讯)
地址:http://www.rongcloud.cn/docs/android_imlib.html#integration
在Application里初始化RongCloud
public class BaseAppcation extends Application {
@Override
public void onCreate() {
super.onCreate();
//在这里初始化
RongCloudUtlis.initRY(this);
}
}
//initRY方法
/*
*
* 初始化融云
* */
public static void initRY(Context context) {
RongIM.init(context);
}
获取 Token 方法(类似于环信的唯一标识(UserId)),官方默认是必须在service端才能获取的,是不是有点坑.
如果全部在Android端做
那就自己做,还好我自己吧Service层的代码Copy了下来简单集成了一下,0.0
代码:
public String getToken(String username, String password) {
//验证账号密码,可以在服务端做,
// 这块我就在本地判断了,
// 如果账号是XINHAO_HAN密码是123456,就代表登陆成功
if (TextUtils.equals("XINHAO_HAN", username) && TextUtils.equals("123456", password)) {
//初始化,这个只是初始化HXHRongCloud,不代表APP的初始化
HXHRongCloud.initHxHRongCloud("你的APPKEY", "你的APP secret");
//我填的用户名:XINHAO_HAN UserID:686666,头像地址没填..
HXHRongCloud.getToken("XINHAO_HAN", "68666", "url", new HXHRongCloud.RongCloudListener() {
@Override
public void getToken(String token) {
//返回的token
}
@Override
public void tokenError(Exception e) {
}
});
} else {
}
return null;
}
LOG
11-02 16:46:34.170 19942-19973/com.example.administrator.xinhaoview E/XINHAO_HAN: getToken: {"code":200,"token":"gKVrftbtJ/IKpba9N+lwZulV3rqYjCbH5y1wZlbYo7LwRlwz2VSDXL3/7NZfxRT5mD1D5XbW/gafrP78g85tjg==","userId":"663"}
出于方便,我把融云集成做的和环信差不多一样了
是这样使用的
//初始化
public static void initHxHRongCloud(String appKey, String secret) {
rongCloud = RongCloud.getInstance(appKey, secret);
}
//根据用户名Userid获取Token
/**
* @param userName 用户名
* @param userId 用户ID
* @param url 用户头像地址
* @param rongCloudListener 回调
*/
public static void getToken(final String userName, final String userId, final String url, final RongCloudListener rongCloudListener) {
new Thread(new Runnable() {
@Override
public void run() {
try {
TokenResult userGetTokenResult = rongCloud.user.getToken(userId, userName, url);
rongCloudListener.getToken(userGetTokenResult.toString());
} catch (Exception e) {
e.printStackTrace();
rongCloudListener.tokenError(e);
}
}
}).start();
}
//更多功能需要自己手动设置
现在你可以按照自己的思路去写了
//步骤1
//用用户名:XINHAO_HAN密码:123456去获取一个Token
getToken("XINHAO_HAN", "123456", new HXHRongCloud.RongCloudListener() {
@Override
public void getToken(String token) {
//这块回调是在子线程运行的
//username,password 在这里去给服务器,让服务器正常注册,并且上传Token
}
@Override
public void tokenError(Exception e) {
}
});
实现的方法:
public String getToken(String username, String password,HXHRongCloud.RongCloudListener h) {
//在这块if语句我在本地写死的,你可以上传用户名密码,让服务器判断数据是否匹配
//并获取userId
if (TextUtils.equals("XINHAO_HAN", username) && TextUtils.equals("123456", password)) {
//初始化,这个只是初始化HXHRongCloud,不代表APP的初始化
HXHRongCloud.initHxHRongCloud("你的APPKEY", "你的APP secret");
//68666这个数值随便填,只要不重复,不要大于32位
HXHRongCloud.getToken(password, "68666", "url", h);
} else {
}
return null;
}
然后你就可以看得懂官方文档了
比如链接融云服务器
//填写你的Token
public static void connect(String token) {
if (UIUtils.getContext().getApplicationInfo().packageName.equals(getCurProcessName(UIUtils.getContext()))) {
RongIM.connect(token, new RongIMClient.ConnectCallback() {
/* *
* Token 错误。可以从下面两点检查 1. Token 是否过期,如果过期您需要向 App Server 重新请求一个新的 Token
* 2. token 对应的 appKey 和工程里设置的 appKey 是否一致
*/
@Override
public void onTokenIncorrect() {
}
/* * 连接融云成功
* @param userid 当前 token 对应的用户 id
*/
@Override
public void onSuccess(String userid) {
Log.e("融云:", " 连接成功:" + userid);
}
/* *
* 连接融云失败
* @param errorCode 错误码,可到官网 查看错误码对应的注释*/
@Override
public void onError(RongIMClient.ErrorCode errorCode) {
Log.e("融云", "onError: " + errorCode);
}
});
}
}
//打开单聊窗口:
/**
* 启动单聊界面。
*
* @param context 应用上下文。
* @param targetUserId 要与之聊天的用户 Id。
* @param title 聊天的标题,开发者需要在聊天界面通过 intent.getData().getQueryParameter("title")
* 获取该值, 再手动设置为聊天界面的标题。
*/
RongIM.getInstance().startPrivateChat(getActivity(), "9527", "标题");
//现在你就可以愉快的聊天啦~~~~
文中提到的几个类下载: 链接: https://pan.baidu.com/s/1bKhCmU 密码: s5d3
如果你特别懒0.0~~~~~
那我给你个Demo~~~~