iOS- 关于AVAudioSession的使用——后台播放音乐

简介: iOS- 关于AVAudioSession的使用——后台播放音乐

1.前言



•AVAudioSession是一个单例,无需实例化即可直接使用。AVAudioSession在各种音频环境中起着非常重要的作用


•针对不同的音频应用场景,需要设置不同的音频会话分类


1.1AVAudioSession的类别


•AVAudioSessionCategoryAmbient


–混音播放,例如雨声、汽车引擎等,可与其他音乐一起播放


•AVAudioSessionCategorySoloAmbient


–后台播放,其他音乐将被停止


•AVAudioSessionCategoryPlayback


–独占音乐播放


•AVAudioSessionCategoryRecord


–录制音频


•AVAudioSessionCategoryPlayAndRecord


–播放和录制音频


•AVAudioSessionCategoryAudioProcessing


–使用硬件解码器处理音频,该音频会话使用期间,不能播放或录音

图解:



2466108-e953b30ee7ed66d3.webp.jpg


2.后台播放音乐



2.1.设置后台任务


+ (UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId

{


// 1. 设置并激活音频会话类别

AVAudioSession *session = [AVAudioSession sharedInstance];

[session AVAudioSessionCategoryPlayback error:nil];

[session setActive:YES error:nil];


// 2. 允许应用程序接收远程控制

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];


// 3. 设置后台任务ID

UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;

newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];

if (newTaskId != UIBackgroundTaskInvalid && backTaskId != UIBackgroundTaskInvalid) {

[[UIApplication sharedApplication] endBackgroundTask:backTaskId];

}

return newTaskId;

}


2.2.设置后台播放


//后台播放音频设置

AVAudioSession *session = [AVAudioSession sharedInstance];

[session setActive:YES error:nil];

[session setCategory:AVAudioSessionCategoryPlayback error:nil];


//让app支持接受远程控制事件

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

2.3.记录后台播放代号


// 后台播放任务Id

UIBackgroundTaskIdentifier  _bgTaskId;


// 设置音频会话,允许后台播放

_bgTaskId = [SoundTool backgroundPlayerID:_bgTaskId];

目录
打赏
0
0
0
0
5
分享
相关文章
ios后台播放声音的三种实现方式
ios后台播放声音的三种实现方式
728 1
|
10月前
|
iOS中如何显示后台返回的带有html标签的富文本字符串
iOS中如何显示后台返回的带有html标签的富文本字符串
90 0
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案
127 0
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
iOS12 切换到后台请求丢失的问题
iOS12版本后,AFNetworking请求过程中,app返回后台,会出现以下错误,并且网络请求中断(只在真机中出现,模拟器不会复现)
272 0
IOS_后台定时器
IOS_后台定时器
138 0
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
192 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决

热门文章

最新文章

  • 1
    苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
    39
  • 2
    uniapp云打包ios应用证书的获取方法,生成指南
    38
  • 3
    iOS|解决 setBrightness 调节屏幕亮度不生效的问题
    123
  • 4
    iOS|记一名 iOS 开发新手的前两次 App 审核经历
    29
  • 5
    iOS各个证书生成细节
    39
  • 6
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
    203
  • 7
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
    62
  • 8
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    81
  • 9
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    63
  • 10
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    70