新版的SDK,究竟该怎么获取群组的成员列表?
需求:有一个群组的详情界面,我在这个界面需要展示出已经加入了群组的成员,也就是要拿到群组成员列表.
查阅开发文档,使用如下方法:
报错:
是因为当前用户没有加入群组,所以不能获取到群组成员列表.
-------------------------------------------------------------------------------------------------------------------------
于是,放弃上面的方法,通过查阅API文档,修改为下面的方法:
我记得之前的版本的SDK是可以这么获取成员列表集合的啊...
------------------------------------------------------------------------------------------------------------------------
好,接下来,是我的提问:
现在版本的SDK,我究竟该用什么方法获取群组的成员列表(在没有加入该群组的情况下)?
查阅开发文档,使用如下方法:
ListmemberList = new ArrayList<>();
EMCursorResultresult = null;
final int pageSize = 20;
do {
result = EMClient.getInstance().groupManager().fetchGroupMembers(groupId,
result != null ? result.getCursor() : "", pageSize);
memberList.addAll(result.getData());
} while (result.getData().size() == pageSize);
报错:
05-02 17:34:25.179 24720-27635/com.onion W/System.err: com.hyphenate.exceptions.HyphenateException: User has not joined the group观察报错:
05-02 17:34:25.180 24720-27635/com.onion W/System.err: at com.hyphenate.chat.EMGroupManager.handleError(Unknown Source)
05-02 17:34:25.181 24720-27635/com.onion W/System.err: at com.hyphenate.chat.EMGroupManager.fetchGroupMembers(Unknown Source)
05-02 17:34:25.181 24720-27635/com.onion W/System.err: at com.onion.view.activity.groups.GroupsActivity$9.call(GroupsActivity.java:364)
05-02 17:34:25.181 24720-27635/com.onion W/System.err: at com.onion.view.activity.groups.GroupsActivity$9.call(GroupsActivity.java:356)
05-02 17:34:25.181 24720-27635/com.onion W/System.err: at rx.Observable.unsafeSubscribe(Observable.java:8666)
05-02 17:34:25.182 24720-27635/com.onion W/System.err: at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94)
05-02 17:34:25.182 24720-27635/com.onion W/System.err: at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:220)
05-02 17:34:25.182 24720-27635/com.onion W/System.err: at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
05-02 17:34:25.182 24720-27635/com.onion W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
05-02 17:34:25.182 24720-27635/com.onion W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-02 17:34:25.183 24720-27635/com.onion W/System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:154)
05-02 17:34:25.183 24720-27635/com.onion W/System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:269)
05-02 17:34:25.183 24720-27635/com.onion W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
05-02 17:34:25.187 24720-27635/com.onion W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
05-02 17:34:25.187 24720-27635/com.onion W/System.err: at java.lang.Thread.run(Thread.java:818)
是因为当前用户没有加入群组,所以不能获取到群组成员列表.
-------------------------------------------------------------------------------------------------------------------------
于是,放弃上面的方法,通过查阅API文档,修改为下面的方法:
// 先从服务器拿到群组对象这个方法,获取的成员数量是正确的,但是成员列表集合却永远都是零的.
EMGroup group = EMClient.getInstance().groupManager().getGroupFromServer(groupId);
// 拿出群组成员数量
mMemberCount = group.getMemberCount();
// 拿出群组成员
Listmembers = group.getMembers();
// 遍历集合
for (String id : members) {
subscriber.onNext(id);
}
subscriber.onCompleted();
我记得之前的版本的SDK是可以这么获取成员列表集合的啊...
------------------------------------------------------------------------------------------------------------------------
好,接下来,是我的提问:
现在版本的SDK,我究竟该用什么方法获取群组的成员列表(在没有加入该群组的情况下)?
没有找到相关结果
已邀请:
1 个回复
[已注销]
3.3.0之后的版本使用的获取群组成员方法api参考这个,还有就是您获取群组成员之前去获取群组信息在去获取群组成员