部分安卓手機在使用融雲打包正式版後,發送圖片不顯示縮略圖,解決方法以下:
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; } }