集成融云群组聊天:

融云的群组聊天需要自己准备服务器维护自己的app里的群关系。APP端的对群操作都通过请求访问服务器来完成。

要确定已经添加了接收会话的类型里有群组,会话列表才会接收跟群组有关的消息。

   Uri uri = Uri.parse("rong://" + getApplicationInfo().packageName).buildUpon()
                    .appendPath("conversationlist")
                    .appendQueryParameter(Conversation.ConversationType.PRIVATE.getName(), "false") //设置私聊会话是否聚合显示
                    .appendQueryParameter(Conversation.ConversationType.GROUP.getName(), "false")     .build();//群组

发送通知消息(小灰条)

用来发送在聊天会话页面显示的提示条(小灰条)通知。

消息类名:InformationNotificationMessage

消息 ObjectName:RC:InfoNtf

消息状态行为标识:MessageTag.ISPERSISTED

消息的结构:{"message":"请在聊天中注意人身财产安全",extra:""}

  InformationNotificationMessage msg = new InformationNotificationMessage(words);
        msg.setMessage(words);
        msg.setExtra(extra);

  RongIMClient.getInstance().sendMessage(Conversation.ConversationType.GROUP, groupId, msg, null, null, new IRongCallback.ISendMessageCallback() {
            @Override
            public void onAttached(Message message) {
                // 消息成功存到本地数据库的回调
            }

            @Override
            public void onSuccess(Message message) {
                // 消息发送成功的回调
                Log.e("tagMsgSuccess", message.getContent() + "");
                refreshConversation();
                refreshConversationList();
            }

            @Override
            public void onError(Message message, RongIMClient.ErrorCode errorCode) {
                // 消息发送失败的回调
                Log.e("tagMsgError", errorCode + "");
            }
        });

群组@别人 首先在rc_config.xml 里开启@功能 true 其次要给融云设置当前群组的联系人 打卡助手里把这个方法 放在ConversationActivity的oncreate()里就可以了。这个是用来请求群组里的全部联系人,并设置给融云的,还有对应的点击事件


private void setGroupMemberProvider() {

        if (mConversationType.equals(Conversation.ConversationType.GROUP)) {
            final ArrayList<UserInfo> userInfos = new ArrayList<>();


            ApiRequestManager.createApi().getGroupInfo(mTargetId)
                    .compose(ApiRequestManager.<GroupChatDetailInfo>applySchedulers())
                    .subscribe(new AbsAPICallback<GroupChatDetailInfo>(ConversationActivity.this, true) {
                        @Override
                        public void onNext(GroupChatDetailInfo info) {

                            final List<GroupChatDetailInfo.DataBean.UsersBean> users = info.getData().getUsers();

                            if (users != null && users.size() > 0) {
                                for (int i = 0; i < users.size(); i++) {
                                    GroupChatDetailInfo.DataBean.UsersBean user = users.get(i);
                                    UserInfo userInfo = new UserInfo(user.getEmployee_id(), user.getName(), Uri.parse(user.getPortraitUri()));


                                    userInfos.add(userInfo);
                                }

                            }

                            RongIM.getInstance().setGroupMembersProvider(new RongIM.IGroupMembersProvider() {
                                @Override
                                public void getGroupMembers(String groupId, RongIM.IGroupMemberCallback callback) {
                                    callback.onGetGroupMembersResult(userInfos);
                                }
                            });
                        }
                    });


            RongMentionManager.getInstance().setMentionedInputListener(new IMentionedInputListener() {
                @Override
                public boolean onMentionedInput(Conversation.ConversationType conversationType, String s) {
                    Intent intent = new Intent(ConversationActivity.this, ShowGroupMembersToAtActivity.class);

                    intent.putParcelableArrayListExtra("group_members", friends);

                    startActivity(intent);
                    return true;
                }
            });
        }
    }

请求到之后设置给融云,用的是下面这个方法。


    RongIM.getInstance().setGroupMembersProvider(new RongIM.IGroupMembersProvider() {
                                @Override
                                public void getGroupMembers(String groupId, RongIM.IGroupMemberCallback callback) {
                                    callback.onGetGroupMembersResult(userInfos);
                                }
                            });

如果希望跳转到自己定义要@别的联系人列表。开启自定义的时候,一定要返回true。默认的是返回false,会跳转到融云默认的界面里选择联系人。

RongMentionManager.getInstance().setMentionedInputListener(new IMentionedInputListener() {
                @Override
                public boolean onMentionedInput(Conversation.ConversationType conversationType, String s) {
                    Intent intent = new Intent(ConversationActivity.this, ShowGroupMembersToAtActivity.class);



                    startActivity(intent);
                    return true;
                }
            });

results matching ""

    No results matching ""