关于RongCloud融云的集成问题

如果你是第一次集成融云,你会被融云的套路暂时摸不着头脑,比如环信的集成是账号密码登陆会给你返回一个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~~~~

你可能感兴趣的:(关于RongCloud融云的集成问题)