部分安卓手机在使用融云打包正式版后,发送图片不显示缩略图,解决方法如下:
1. 发送本地图片,rong.sendImageMessage的prepare,此时使用本地默认图片
2. 发送中,显示图片发送百分比,利用监听
3. 发送成功后,rong.getHistoryMessages 获取历史记录,参数:oldestMessageId : -1,count : 1
4. 根据返回值替换之前的默认图片src
/**
* 发送图片消息
* 周枫
* 2015.08.11
* @param {Object} sendMsg
*/
function sendPicture(p_c, target_id, img_url, extra, conversationType, callback) {
// $api.rmStorage(\'send_img_attrs\');
// api.alert({
// msg : JSON.stringify(img_attrs)
// }, function(ret, err) {
// //coding...
// });
rong.sendImageMessage({
conversationType : conversationType,
targetId : target_id,
imagePath : img_url,
extra : extra
}, function(ret, err) {
if (ret.status == \'prepare\') {
var img_cache = ret.result.message.content.imageUrl;
// imageCache(img_cache, \'\', function(native_path) {
//单聊准备发送,向会话页面发送正在发送消息事件
api.sendEvent({
name : \'insertSendMessage\',
extra : {
data : ret.result,
img_url : img_cache
}
})
//清除未读信息
// cleanMsg(ret.result.message.targetId, conversationType);
ret.result.message.content.nativePath = img_cache;
//存入会话数据库
sendMessageToDb(ret.result.message);
// });
} else if (ret.status == \'progress\') {
// console.log(\'jindu:\'+ret.result.progress);
var msg_id = ret.result.message.messageId;
var msg_pro = ret.result.progress;
// api.execScript({
// name : \'hh_chat_window\',
// frameName : \'hh_chat_frame\',
// script: \'setSendProgress(\'+msg_id+\',\'+msg_pro+\');\'
// });
api.sendEvent({
name : \'sednImgPropress\',
extra : {
msg_id : msg_id,
msg_pro : msg_pro
}
})
//
} else if (ret.status == \'success\') {
var msg_id = ret.result.message.messageId;
getPicHttpPathByRongHis(msg_id, conversationType, target_id, function(is_true, data){
if(is_true) {
var native_path = data[0].content.imageUrl;
api.execScript({
name : \'hh_chat_window\',
frameName : \'hh_chat_frame\',
script : \'removeload(\' + msg_id + \',\\'\'+ native_path +\'\\');\'
});
setTimeout(function(){
// 修改会话发送状态
updateMsgsentImgStatusToDb(msg_id, target_id, \'SENT\', native_path);
}, 300);
//
callback(true);
} else {
api.toast({
msg:data
});
callback(false);
}
});
} else if (ret.status == \'error\') {
var err_code = err.code;
switch(err_code) {
case 30014:
// openNoticeLogout(\'服务器不可用,请检查网络状况后重新登录\');
api.toast({
msg : \'对不起,信息发送失败,请重新连接网络后再次发送\'
});
// api.alert({
// msg : \'对不起,图片发送失败\'
// });
break;
case 30003:
api.toast({
msg : \'对不起,信息发送失败,请重新连接网络后再次发送\'
});
// api.alert({
// msg : \'对不起,图片发送失败,服务器超时\'
// });
break;
case 31009:
api.toast({
msg : \'对不起,图片发送失败,您在对方黑名单中\'
});
// api.alert({
// msg : \'对不起,图片发送失败,您在对方黑名单中\'
// });
break;
case -10000:
api.toast({
msg : \'对不起,信息发送失败,请重新连接网络后再次发送\'
});
// api.alert({
// msg : \'对不起,图片发送失败,未调用 init 方法进行初始化\'
// });
break;
case -10001:
api.toast({
msg : \'对不起,信息发送失败,请重新连接网络后再次发送\'
});
// api.alert({
// msg : \'对不起,图片发送失败,未调用 connect 方法进行连接\'
// });
break;
case -10002:
api.toast({
msg : \'对不起,信息发送失败,请重新连接网络后再次发送\'
});
// api.alert({
// msg : \'对不起,图片发送失败,输入参数错误\'
// });
break;
case 22406:
api.alert({
msg : \'对不起,当前群组已经解散\'
}, function(ret, err) {
api.execScript({
name : \'hh_chat_window\',
frameName : \'hh_chat_frame\',
script : \'closeUiChatBox();\'
});
});
break;
default :
api.toast({
msg : \'对不起,信息发送失败,请重新连接网络后再次发送\'
});
break;
}
var msg_id = ret.result.message.messageId;
//修改会话发送状态
setTimeout(function() {
updateMsgsentStatusToDb(msg_id, targetId, \'FAILED\');
}, 300);
}
});
}
function getPicHttpPathByRongHis(msg_id, conver_type, target_id, callback) {
rong.getHistoryMessages({
conversationType : conver_type,
targetId : target_id,
oldestMessageId : -1,
count : 1
}, function(ret, err) {
if(ret.status == \'success\') {
callback(true, ret.result);
} else {
callback(false, \'发送图片信息失败,请重新发送\');
}
})
}
/**
* 清除正在发送图标
* 周枫
* 2015.12.10
* @param {Object} msg_id
*/
function removeload(msg_id, native_path) {
var load = $api.byId(\'status_\' + msg_id);
$api.remove(load);
if(native_path != \'\') {
var img_pic = document.getElementById(\'send_img_\' + msg_id);
img_pic.src = native_path;
}
}