发送 语音问题
然后 我拿到 其中的 url 使用 RNFetchBlob 下载下来 在文件后面 追加.amr 格式RN 环信 官方已经不再维护 目前的 代码 集成 只能实现文字和图片
使用的是webIm SDK的方式 完成集成
点击语音的时候 我下载 到本地文件夹 然后使用 react native sound 播放这个文件点击语音的时候 我下载 到本地文件夹 然后使用
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发送过去 但是 这样 不能发送 缩略图 只能接收端 收到 视频之后 下载 下来 然后徐展示 缩略图
略微 描述 这个问题解决 过程
网友评论