Android集成融云实现聊天功能

在项目中如何集成融云SDK,我就不在详细说了,具体配置可以在官网查看,实现聊天的功能,集成融云 IM 界面组件IMKit和融云 IM 通讯能力库IMLib既可,下面我们说一下,集成组件组件成功以后,如何实现聊天的功能。

一、首先在Application的oncreate()方法里进行初始化

RongIM.init(this);

二、用token发送请求连接融云服务器

一般在登录的时候,接口会返回对应用户的token,我们在连接融云服务器

 private void initRy() {
        final UserBean userBean = SpUtils.getInstance(this).getLogin();
        if (userBean.getToken() != null) {
            RongIM.connect(userBean.getToken(), new RongIMClient.ConnectCallback() {
                @Override
                public void onTokenIncorrect() {
//                    showToast("onTokenIncorrect");
                }

                @Override
                public void onSuccess(String s) {
                    //RongIM.getInstance().setMessageAttachedUserInfo(true);
                    RongIM.getInstance().setCurrentUserInfo(new UserInfo(s, userBean.getResAlias(), Uri.parse(MyHttpClient.IMG_URL + userBean.getImgUrl())));
                }

                @Override
                public void onError(RongIMClient.ErrorCode errorCode) {
//                    showToast(errorCode + "");
                }
            });
        }
    }

融云onSuccess()方法中返回的s,是在融云服务器中申请成功后,对应用户的id,如果你是保存的加密的,返回的就是加密的id,这一块要注意,因为你在跟融云服务器连接的时候,一定要对应起来。

三、实现聊天功能




    

    

群聊界面主要的逻辑

 conversationType = Conversation.ConversationType.GROUP;
            list = getIntent().getParcelableArrayListExtra("users");
            enterFragment(conversationType, targetId);
            for (GroupDetail.UsersEntity usersEntity : list) {
                RongIM.getInstance().refreshUserInfoCache(new UserInfo(AesUtils.encode(usersEntity.getUserId(), "xxxxxx"), usersEntity.getAlias(), Uri.parse(MyHttpClient.IMG_URL + usersEntity.getImgUrl())));
            }
            RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
                @Override
                public UserInfo getUserInfo(String s) {
                    if (list == null) {
                        return null;
                    }
                    for (GroupDetail.UsersEntity usersEntity : list) {
                        if (usersEntity.getUserId().equals(AesUtils.decode(s, "xxxxxx"))) {
                            return new UserInfo(s, usersEntity.getAlias(), Uri.parse(MyHttpClient.IMG_URL + usersEntity.getImgUrl()));
                        }
                    }
                    return null;
                }
            }, true);
private void enterFragment(Conversation.ConversationType mConversationType, String mTargetId) {
        ConversationFragment fragment = (ConversationFragment) getSupportFragmentManager().findFragmentById(R.id.conversation);
        Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon()
                .appendPath("conversation")
                .appendPath(mConversationType.getName().toLowerCase())
                .appendQueryParameter("targetId", mTargetId).build();
        fragment.setUri(uri);
    }

 单聊就是类型Conversation.ConversationType.GROUP换成Conversation.ConversationType.PRIVATE(私聊会话),把targetId换成userId既可。

 

你可能感兴趣的:(Android进阶)