cordova在ios系统实现录音功能的 的解决方法

 console.log("录音开始");
  var myMedia = new Media('cdvfile://localhost/bundle/www/res/media/piano123.wav', onSuccess, onErrorLoadFs);
  myMedia.startRecord();
  await this.wait(5000);
  myMedia.stopRecord();
  console.log("录音结束");
  await this.wait(1000);
  console.log("录音播放");
  myMedia.play(); 

以上两段代码首先是创建的文件格式不同,android比较灵活,可以创建任何音频格式的文件,ios经测试MP3好像不支持,wav是可以的。其次就是android在实例化Media对象的时候可以顺便创建test.mp3文件,ios好像必须先创建好test.wav文件(其实不需要),才能实例化Media对象。还有就是new Media的第一个参数,ios系统必须加上"documents://"前缀。

我在项目中开发IM的录音功能的时候,没有判断当前APP是否拥有响应的权限,导致录制失败(录制出来是0kb,长度也是0毫秒)。为此我在工具类中,添加了麦克风权限的判断方法,当用户去录音的时候,如果检测到没有响应的麦克风权限,则提示用户到手机的设置页面打开麦克风的权限,当用权限的时候直接录制就可以了。

升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列。

直入正题吧

今天在写 Swift 3 相关的一个项目小小练下手,发现调用相机,崩了。试试看调用相册,又特么崩了。然后看到控制台输出了以下信息:
This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

Privacy - Microphone Usage Description //麦克风权限
Privacy - Contacts Usage Description   //通讯录权限
Privacy - Camera Usage Description     //摄像头权限
Privacy - NSSiriUsageDescription       //Siri的权限
Privacy - Bluetooth Peripheral Usage Description //蓝牙
Privacy - Reminders Usage Description  //提醒事项
Privacy - Motion Usage Description     //运动与健康
Privacy - Media Libaray Usage Description //媒体资源库
Privacy - Calendars Usage Description  //日历

猜你喜欢

转载自blog.csdn.net/u013040887/article/details/81094444
今日推荐