问题详情:通过 URL 构建的 AVFile,SDK版本3.2.5发送消息时,产生的消息的duration是0。
相关工单:leancloud/1085
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);
I moved a post to a new topic: 发送 file 类型的 message 时,file 自己传入的 metadata 中 duration 为 0