由于你们conversation似乎存在有效期问题,比如超过一年后conversation服务端会清除。我们需要对此问题进行相应处理。需要一个接口告诉我会话是否已经失效或者不存在。通过下面的方式模拟该问题。
从leancloud控制台从conversation表删除对应conversation:
然而android客户端通过下面方式:
conversation.setMustFetch();
conversation.fetchInfoInBackground(new AVIMConversationCallback() {
@Override
public void done(AVIMException e) {
if (e == null) {
} else {
//超时,网络不良,显示重试
if (e.getCode() == AVException.TIMEOUT) {
} else if (e.getCode() == AVErrorCode.CONVERSATION_NOT_FOUND) {//会话不存在
} else {
}
}
}
});
却发现没有AVIMException抛出,AVIMException始终返回null, 根本不告诉我conversation已失效。注意,我已经要求强制去请求服务端数据了,我的理解此种情况不应该抛出
4303 CONVERSATION_NOT_FOUND 发送消息,或邀请等操作对应的对话不存在。
这种错误吗?
然后我又重试通过:
AVIMConversationQuery conversationQuery = ChatManager.getInstance().getConversationQuery();
conversationQuery.setQueryPolicy(AVQuery.CachePolicy.NETWORK_ONLY);
conversationQuery.whereEqualTo(Constants.OBJECT_ID, conv_id).setLimit(1)
.findInBackground(new AVIMConversationQueryCallback() {
@Override
public void done(List<AVIMConversation> list, AVIMException e) {
//得到的结果是list =null, 然而e也是null
}
});
中得到的结果是list =null, 然而e也是null,并且一次执行,回掉却执行多次(测试有2~3次),多次回掉绝对是你们sdk这边的问题。
你们可以先确认下,然后调查下该问题吗?还有别的方式能达到我的目的吗?比较紧急,看到希望立即回应下?
@BinaryHB @ycui