我在检查频道名称时总是出现错误,例如

mChatClient.getChannels().getChannel("one", new CallbackListener<Channel>() {
        @Override
        public void onSuccess(Channel channel) {
            if (channel != null) {
                joinChannel(channel);
            } else {
                mChatClient.getChannels().createChannel("one",
                        Channel.ChannelType.PUBLIC, new CallbackListener<Channel>() {
                            @Override
                            public void onSuccess(Channel channel) {
                                if (channel != null) {
                                    joinChannel(channel);
                                }
                            }

                            @Override
                            public void onError(ErrorInfo errorInfo) {
                                Log.e(TAG,"Error creating channel: " + errorInfo.getErrorText());
                            }
                        });
            }
        }

        @Override
        public void onError(ErrorInfo errorInfo) {
            Log.e(TAG,"Error retrieving channel: " + errorInfo.getErrorText());
        }

    });


在这种情况下,只会出现错误块。我能知道怎么了吗?

最佳答案

您正在做的是:


检查频道是否可用。
如果可用,请检查通道是否为空,如果是,则创建该通道。


如果您查看代码,就会看到正在onSuccess中进行创建,但是,如果找不到您的频道,则不会触发onSuccess,因此它将不会尝试创建频道。

相反,您应该做的是在onError创建通道中。 (未经测试,可能有一些错误):

mChatClient.getChannels().getChannel("one", new CallbackListener<Channel>() {
    @Override
    public void onSuccess(Channel channel) {
        joinChannel(channel);
    }

    @Override
    public void onError(ErrorInfo errorInfo) {
        Log.e(TAG,"Error retrieving channel: " + errorInfo.getErrorText());
        mChatClient.getChannels().createChannel("one", Channel.ChannelType.PUBLIC, new CallbackListener<Channel>() {
            @Override
            public void onSuccess(Channel channel) {
                if (channel != null) {
                    joinChannel(channel);
                }
            }

            @Override
            public void onError(ErrorInfo errorInfo) {
                Log.e(TAG,"Error creating channel: " + errorInfo.getErrorText());
            }
        });
    }
});

09-07 08:56