我在检查频道名称时总是出现错误,例如
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());
}
});
}
});