uni-app uni.getRecorderManager() IOS 第一次录音只能固定60S

uni-app uni.getRecorderManager() IOS 第一次录音只能固定60S

开发环境 版本号 项目创建方式
Mac 11.2.3 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:11.2.3

HBuilderX类型:正式

HBuilderX版本号:3.1.12

手机系统:iOS

手机系统版本号:IOS 14

手机厂商:苹果

手机机型:iphoneX

页面类型:vue

打包方式:云端

操作步骤:
获取权限后
uni.getRecorderManager()
第一次录音只能固定60S
设置时长无效
重进后可以设置时长

预期结果:
获取权限后
uni.getRecorderManager()
第一次录音只能固定60S
设置时长无效
重进后可以设置时长

实际结果:
获取权限后
uni.getRecorderManager()
第一次录音只能固定60S
设置时长无效
重进后可以设置时长

bug描述:
获取权限后
uni.getRecorderManager()
第一次录音只能固定60S
设置时长无效
重进后可以设置时长

更多关于uni-app uni.getRecorderManager() IOS 第一次录音只能固定60S的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

没人吗

更多关于uni-app uni.getRecorderManager() IOS 第一次录音只能固定60S的实战教程也可以访问 https://www.itying.com/category-93-b0.html


找到原因了, permission.js 请求权限状态为3时开始录音没设置选项

这是一个已知的iOS平台权限相关的问题。在首次调用uni.getRecorderManager()时,由于iOS系统对录音权限的严格管理,可能会出现录音时长被限制为60秒的情况,即使设置了duration参数也无效。

问题原因: iOS系统在首次授权录音权限时,会采用较为保守的默认设置,导致录音管理器初始化时的默认时长限制为60秒。这个限制在应用重新启动或重新初始化录音管理器后会被解除。

临时解决方案:

  1. 在应用启动时预初始化录音管理器,但不立即开始录音
  2. 在获取录音权限后,先销毁并重新创建录音管理器实例
  3. 在首次录音前添加一个简短的延迟,确保权限完全生效

示例代码:

// 应用启动时预初始化
const recorderManager = uni.getRecorderManager()

// 在需要录音时重新获取实例
onRecordStart() {
  this.recorderManager = uni.getRecorderManager()
  // 设置参数
  this.recorderManager.start({
    duration: 60000, // 设置所需时长
    // 其他参数...
  })
}
回到顶部