部分安卓手机在使用融云打包正式版后,发送图片不显示缩略图,解决方法如下:
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;
}}