语音消息 duration 为 0

ios-sdk/issues/680

请问这个问题现在怎么解决的

通过 url 构建再发送的语音消息,没办法获取到 duration,因为 SDK 不能将音频下载下来再分析 duration(无法预测文件有多大),然后再进行发送。
所以通过 url 发送的语音消息无法获取到 duration,可以自行检测 duration,然后存储到 attr 中,接收消息时再获取。

这个方法里面的参数filePath就是语音的本地路径啊,和url什么关系啊

安卓那边自己发送和接收语音时都是SDK算的,但是ios这边只有接收语音消息时SDK可以算出来,发送语音时给个语音本地路径SDK方法算不出来,要是自己计算的话碰到边界值时会不准确,麻烦看下这个问题,谢谢~

我测试最新 SDK attachedFilePath 是没问题的,请问你的代码怎么写的?

AVIMAudioMessage *message = [AVIMAudioMessage messageWithText:@"" attachedFilePath:_recordPath attributes:nil];
DLog(@"录好的语音时间为%f",message.duration);

这边获取到的时间为0

这个构造方法不会计算 duration,sendmessage 成功之后在回调的 block 中会获取到 duration。

/*!
往对话中发送消息。
@param message - 消息对象
@param options - 可选参数,可以使用或 “|” 操作表示多个选项
@param callback - 结果回调
@return None.
*/
- (void)sendMessage:(AVIMMessage *)message
options:(AVIMMessageSendOption)options
callback:(AVIMBooleanResultBlock)callback;

这里的callback返回类型是个bool类型啊

在 block 中直接下行代码就能获取到 duration:

DLog(@"录好的语音时间为%f",message.duration);