RN 聊天功能 使用环信 发送 消息

发送 语音问题

然后 我拿到 其中的 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发送过去 但是 这样 不能发送 缩略图  只能接收端 收到 视频之后 下载 下来  然后徐展示 缩略图

略微 描述 这个问题解决 过程

你可能感兴趣的:(RN 聊天功能 使用环信 发送 消息)