信令查询频道人数为0

信令查询频道人数返回ecode为0,但人数不管频道内多少人都是返回0,代码如附件,请看下什么情况



还有查询频道人数是不是在是否加入频道的情况下均可查询频道人数?

在调用login前先设置callback方法.然后再login

信令客户端,调用channelQueryUserNum,在 onChannelQueryUserNumResult 回调里面返回用户数量。

如果返回的数值为0,麻烦 确认下频道里面 确实有用户 存在。

不行的,还是一样

@1609: 你贴一下,现在的代码. 还有onLoginSuccess 和 onLoginFailed 回调是什么?

@1606:onLoginSuccess 中fd 返回0

@1609:贴一下现在代码看看

@1606: m_agoraAPI = AgoraAPIOnlySignal.getInstance(this, getString(R.string.agora_app_id));
m_agoraAPI.callbackSet(new AgoraAPI.CallBack() {
@Override
public void onChannelQueryUserNumResult(String channelID, int ecode, int num) {
super.onChannelQueryUserNumResult(channelID, ecode, num);

        }

        @Override
        public void onChannelUserList(String[] accounts, int[] uids) {
            super.onChannelUserList(accounts, uids);

        }

        @Override
        public void onError(String name, int ecode, String desc) {
            super.onError(name, ecode, desc);

        }

        @Override
        public void onLoginFailed(int ecode) {
            super.onLoginFailed(ecode);

        }

        @Override
        public void onLoginSuccess(int uid, int fd) {
            super.onLoginSuccess(uid, fd);
            m_agoraAPI.channelQueryUserNum("demoChannel1");
        }

        @Override
        public void onChannelJoined(String channelID) {
            super.onChannelJoined(channelID);
        }

        @Override
        public void onChannelJoinFailed(String channelID, int ecode) {
            super.onChannelJoinFailed(channelID, ecode);
        }


    });
    String token = calcToken(getString(R.string.agora_app_id), "xxx", "123555", 2000000000);
    m_agoraAPI.login(getString(R.string.agora_app_id), "123555", token, 0, "");

@1606: onLoginSuccess 回调 uid=-292709862 fd=0

@1609:我看到你代码 channelQueryUserNum(“demoChannel1”); 但是没看到你调用了: channelJoin(St ring channelID);方法.

@1606:这个channelJoin和mRtcEngine的joinChannel有什么区别,我们这边的需求是在进入频道前先去拿频道内的人数,如果超过一定人数不准进入,如果没达到一定人数,可以进入,帮我看下信令是否可以满足我们的需求

@1609: channelJoin 是信令频道, joinChannel 是媒体频道, 所有用户在加入媒体频道前要加入信令频道. 你在xb’l信令频道里维护用户信息. 你可以看下这里: https://docs.agora.io/cn/user_guide/Component_and_Others/Terminology.html#channel

@1606:那也就是必须要先加入频道,才能获取频道内人数,不可以先获取频道人数,再根据需求决定是否可以加入频道?

@1606:
1、通过心跳机制检测信令服务和客户端的连接状态。
2、 在信令服务端维护客户端状态列表,通过以上所述各种机制同步客户端状态,客户端在方便的时候可以查询。
这2个是通过ServerApi实现?但看到ServerApi将被弃用

@1609: 该方法后续将被 Server SDK 替代。 Server SDK 预计将于 2017 年 3 月底上线. 所以你可以先用serverApi, 然后换成server sdk. 这个在服务端操作, 不影响客户端.

@1606:好的,谢谢

我登录成功了。然打印状态,返回已经在线,然后我再查询,返回总人数为0