每次有任意活动出现闪退,再回到和即时通信有关的页面,比如会话列表时,查询就会失败,报错信息
downlink : cmd: error
i: -65526
service: 2
errorMessage {
code: 4105
reason: "SESSION_REQUIRED"
}
错误码详解里又说道要在session打开后的回调里进行查询,但没有具体的代码。我的代码大致如下
queryRecentConvs(int[] convFlags, int count, ConvQueryCallback callback){
//Create query ...
query.findInBackground(new AVIMConversationQueryCallback() {
@Override
public void done(final List<AVIMConversation> conversations, AVIMException e) {
if (e == null && conversations != null) {
//Read data
} else {
Log.d(TAG, "done: query conversations require session. Logging in and retrying...");
AVUser.getCurrentUser().refreshSessionTokenInBackground(new LogInCallback<AVUser>() {
@Override
public void done(AVUser user, AVException e) {
if (e == null && user != null) {
AVUser.becomeWithSessionTokenInBackground(user.getSessionToken(), new LogInCallback<AVUser>() {
@Override
public void done(AVUser user, AVException e) {
if (e == null && user != null) {
int tt = count;
if (tt < 2) {
queryRecentConvs(convFlags, ++tt, callback);
}
}
}
});
}
}
});
}
}
});
}