发送 语音问题
RN 环信 官方已经不再维护 目前的 代码 集成 只能实现文字和图片
使用的是webIm SDK的方式 完成集成
点击语音的时候 我下载 到本地文件夹 然后使用
react native sound 播放这个文件
发现 播放失败 ,没有报错 播放失败消息, 只走了 react native sound 的 play 方法
然后我 怀疑是 因为路径的错误 ,所以 我找了 一个网络测试的 音频 url https://cimili-cdn-audio-of-word.cimili.com/uploads/audio/mp3/us/abandon.mp3
我使用 这个 URL 可以实现在线 播放
下载到与环信语音文件下载的同一个文件夹后 也能播放 排除了 路径问题
然后 我测试 是不是 环信的下载语音文件损坏,我直接 把 APP上下载的
这个文件拿到 电脑端 用电脑自带的浏览器 播放 也是可以播放
所以 我觉得 这个文件 也没事什么问题,但是 在手机却是 播放不了
使用react native sound / react native video 这两个播放器都 不能播放
这是 环信客服 的回复 他用的是 电脑 上浏览器 webim 处理的消息
对我来说没什么帮助
我使用 IJKplayer 也不能 完成 播放
//发送语音消息
sendVoiceMessage(Voice) {
console.log('========1=====1====1====1====1=====1====1',Voice)
let VoicePath = Voice.path;
let duration = Voice.duration;
let voiceName = null;
if (!Utils.isEmpty(VoicePath)) {
voiceName = VoicePath.substring(VoicePath.lastIndexOf('/')+ 1,VoicePath.length);
}
let voiceType = voiceName && voiceName.split('.').pop();
if (Utils.isEmpty(VoicePath)) {
console.log('语音文件损坏')
}
let id = WebIM.conn.getUniqueId();// 生成本地消息id
let msg = new WebIM.message('audio',id);// 创建音频消息
console.log('========2=====2====2====2====2=====2====2=',Voice);
if (this.chatType == 'groupchat') {
let to = this.sendTo;
msg.set({
apiUrl: WebIM.config.apiURL,
ext: {
filelength: duration,
filename: voiceName,
filetype: voiceType,
},
file: {
data: {
uri: VoicePath,type: 'application/octet-stream',name: voiceName
}
},
to,
roomType: false,
// chatType: 'chatRoom',
onFileUploadError: function (error) {
console.log('语音消息上传失败: ' + JSON.stringify(error))
},
onFileUploadComplete: function (data) {
console.log('消息上传成功',data)
},
success: function (id) {
console.log('消息发送成功')
}
});
msg.setGroup('groupchat');
WebIM.conn.send(msg.body);
this.concatMessage({
'conversationId': this.chatContactId,
'id': id,
'from': this.username,
'to': this.sendTo,
'time': TimeUtil.currentTime(),
'url': VoicePath,
'length':duration,
'msgType': 'Voice',
'type':'groupchat',
'titleName' : this.titleName,
'isOutgoing' : true,
'userNick':this.state.userInfo.nikeName,
})
解决 办法 不能按照 环信 web文档 中的方法 发送 RN手机 端 的 语音消息
因为 找RN中 没有 upLoad 文件方法
所以 应该吧 语音文件 通过 file: {
data: {
uri: VoicePath,type: 'application/octet-stream',name: voiceName
}
},
这个 方法 吧 文件 发送过去
发送 视频 同样 遇到问题 我用同样 的方法 发送却不能成功 不知道 是 什么原因 在我使用消息类型选择 video 的是时候 是不能 通过 file 的方法 发送
随后 我占用了一个消息类型 为file 的 然后我 通过这个file发送过去 但是 这样 不能发送 缩略图 只能接收端 收到 视频之后 下载 下来 然后徐展示 缩略图
略微 描述 这个问题解决 过程