### 音乐后台播放
* .当程序进入后台的时候,开启后台任务 ```
- (void)applicationDidEnterBackground:(UIApplication *) {
// 开启后台任务
[application beginBackgroundTaskWithExpirationHandler:nil];
}
```
* .在项目的Targets页面,设置Capabilities,BackgroundModes选择第一项,`Audio, AirPlay and Picture in Picture` * .设置AudioSession会话 ```
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 1.拿到AVAudioSession会话
AVAudioSession *session = [AVAudioSession sharedInstance];
// 2.设置类型
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
// 3.激活
[session setActive:YES error:nil]; return YES;
}
``` ### 显示锁屏信息
* .当开始播放的时候,开启锁屏信息,抽取一个方法 ```
[self updateLockInfo];
```
* .导入`MediaPlayer/MediaPlayer.h`框架,在播放信息中心设置信息 ```
- (void)updateLockInfo {
// 获取播放信息中心
MPNowPlayingInfoCenter *center = [MPNowPlayingInfoCenter defaultCenter];
// 创建信息字典
NSMutableDictionary *infos = [NSMutableDictionary dictionary];
// 设置信息内容
infos[MPMediaItemPropertyAlbumTitle] = self.playingMusic.name;
infos[MPMediaItemPropertyAlbumArtist] = self.playingMusic.singer;
infos[MPMediaItemPropertyArtwork] = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:self.playingMusic.icon]];
infos[MPMediaItemPropertyPlaybackDuration] = @(self.player.duration);
infos[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @(self.player.currentTime);
// 根据字典设置播放中心
[center setNowPlayingInfo:infos]; // 开启远程事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
// 让当前控制器成为第一响应者
[self becomeFirstResponder];
}
```
* .控制器默认不能成为第一响应者,需要实现以下方法 ```
- (BOOL)canBecomeFirstResponder {
return YES;
}
```
* .监听远程事件 ```
- (void)remoteControlReceiveWithEvent:(UIEvent *)event {
switch (event.subtype) {
// 当点击播放或者暂停按钮的时候
case UIEventSubtypeRemoteControlPlay:
case UIEventSubtypeRemoteControlPause:
[self playOrPauseButtonClick];
break;
// 当点击下一首按钮的时候
case UIEventSubtypeRemoteControlNextTrack:
[self nextButtonClick];
break;
// 当点击上一首按钮的时候
case UIEventSubtypeRemoteControlPreviousTrack:
[self previousButtonClick];
break;
default:
break;
}
```

iOS后台播放的更多相关文章

  1. iOS后台播放音乐

    iOS实现在后台播放音乐 iOS4之后就支持后台播放音频了.只需下面两步就可以实现后台播放音频操作了. 1. 在Info.plist中,添加"Required background mode ...

  2. ios 后台播放音乐1条注意事项

    除了设置程序的后台模式,还需要几行代码 AVAudioSession *session = [AVAudioSession sharedInstance]; [session setCategory: ...

  3. iOS 后台播放音乐

    在info.plist文件中添加 下面是后台播放音频的完整测试代码: 引入文件<AVFoundation/AVFoundation.h> //后台播放音频设置 AVAudioSession ...

  4. iOS AvPlayer AvAudioPlayer音频的后台播放问题

    iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,Av ...

  5. iOS设备后台播放音乐方法

    iOS设备后台播放音乐方法 1 在设置Capabliites中打开Background Modes,选择Audio And AirPlay 2 在控制viewDidLoad中添加下面代码 AVAudi ...

  6. IOS 后台执行 播放音乐

    iOS 4開始引入的multitask.我们能够实现像ipod程序那样在后台播放音频了. 假设音频操作是用苹果官方的AVFoundation.framework实现.像用AvAudioPlayer.A ...

  7. IOS后台运行 之 后台播放音乐

    iOS 4开始引入的multitask,我们可以实现像ipod程序那样在后台播放音频了.如果音频操作是用苹果官方的AVFoundation.framework实现,像用AvAudioPlayer,Av ...

  8. iOS从零开始学习直播之音频2.后台播放和在线播放

    本篇主要讲音频的后台播放和在线播放. 后台播放   上一篇写的工程运行之后程序退至后台,发现运行不了,歌停止了,这显然不行,音乐后台播放是标配啊.今天就来讲一下后台播放. 1.在plist文件里,告诉 ...

  9. iOS开发--QQ音乐练习,后台播放和锁屏界面

    一.设置后台播放 首先允许程序后台播放 代码实现 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...

随机推荐

  1. 【CodeVS 1218】【NOIP 2012】疫情控制

    http://codevs.cn/problem/1218/ 比较显然的倍增,但是对于跨过根需要很多讨论,总体思路是贪心. 写了一上午,不想再说什么了 #include<cstdio> # ...

  2. JAVA程序员一定知道的优秀第三方库(2016版)

    几乎每个程序员都知道要“避免重复发明轮子”的道理——尽可能使用那些优秀的第三方框架或库,但当真正进入开发时,我却经常发现他们有时并不知道那些轮子在哪里.最近,我在业余时间带几个年轻的程序员一起做了一个 ...

  3. poj1144 求不同割点的个数

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11914   Accepted: 5519 Descript ...

  4. Activiti 学习笔记记录

    官方在线用户手册(英文版):http://activiti.org/userguide/index.html 中文用户手册:http://www.mossle.com/docs/activiti/in ...

  5. The prefix "tx" for element "tx:annotation-driven " is not bound

    The prefix "tx" for element "tx:advice" is not bound 这个错误的原因很简单是: 我们在定义申明AOP的时候. ...

  6. mysql-查看全局变量设置

    show global variables like '%sql_mode%' 全局变量

  7. 转:如何用EXCEL表运用FV函数

    转:http://zhidao.baidu.com/link?url=lKFCYBW-zMC-pp8GkFXZnmwQf3YL_csYLGo-0v2OAASSZwjw40QRgEO0V8s2Y3zCJ ...

  8. bzoj 1257

    商最多有sqrt(n)个. #include<iostream> #include<cstdio> #include<cstring> #include<al ...

  9. Leetcode 114, Flatten Binary Tree to Linked List

    根据提示,本题等价于pre order traverse遍历,并且依次把所有的节点都存成right child,并把left child定义成空集.用递归的思想,那么如果分别把左右子树flatten成 ...

  10. Jenkins配置MSBuild时使用环境变量

    [MSBuild Plugin]插件在使用环境变量有个很奇葩的方式,比如我们通常在Windows的节点机器上,使用WORKSPACE环境变量时,批处理应该这样写%WORKSPACE%,而有时插件确不能 ...