OC-锁屏播放

前言

我们在写APP中经常会遇到需要锁屏播放的这种情况,在这里,楼主就简单的说说锁屏播放是怎么实现的。

此篇文章为OC版本,Swift版本请移步这里:Swift版本

如何实现

打开后台模式

在设置的Capabilities中选择后台模式的第一项,如下图所示:


OC-锁屏播放_第1张图片
g

导入相应的头文件

#import 
#import 

播放音乐并设置相关信息

播放音乐并设置锁屏需要显示的相关信息

#pragma mark 播放音乐
- (void)playMusic
{
self.audioPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:[[NSBundle mainBundle]URLForResource:self.model.filename withExtension:nil] error:nil];
self.audioPlayer.delegate = self;

[self.audioPlayer prepareToPlay];

if (!self.audioPlayer.isPlaying) {
[self.audioPlayer play];
}
}

#pragma mark 设置锁屏信息显示
- (void)setLockScreenDisplay
{
NSMutableDictionary *info = [NSMutableDictionary dictionary];
[info setObject:self.model.name forKey:MPMediaItemPropertyTitle];//歌名
[info setObject:self.model.singer forKey:MPMediaItemPropertyArtist];//作者
//    [info setObject:self.model.filename forKey:MPMediaItemPropertyAlbumTitle];//专辑名
[info setObject:self.model.singer forKey:MPMediaItemPropertyAlbumArtist];//专辑作者
[info setObject:[[MPMediaItemArtwork alloc]initWithImage:[UIImage imageNamed:self.model.icon]] forKey:MPMediaItemPropertyArtwork];//显示的图片
[info setObject:[NSNumber numberWithDouble:self.audioPlayer.duration] forKey:MPMediaItemPropertyPlaybackDuration];//总时长
[info setObject:[NSNumber numberWithFloat:1.0] forKey:MPNowPlayingInfoPropertyPlaybackRate];//播放速率
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:info];
}
打开后台播放
#pragma mark 后台播放
- (void)playingBackground
{
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
[session setActive:YES error:nil];
}

打开和关闭远程控制事件

viewWillAppear中打开接受远程控制事件,在viewWillDisappear中关闭远程控制事件,代码如下:

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self becomeFirstResponder];
[[UIApplication sharedApplication]beginReceivingRemoteControlEvents];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self resignFirstResponder];
[[UIApplication sharedApplication]endReceivingRemoteControlEvents];
}
设置锁屏控制

设置锁屏时,锁屏界面的相关控制按钮所应该执行的方法

#pragma mark 锁屏控制
- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
switch (event.subtype) {
case UIEventSubtypeRemoteControlPlay://播放

break;
case UIEventSubtypeRemoteControlPause://暂停

break;
case UIEventSubtypeRemoteControlStop://停止
break;
case UIEventSubtypeRemoteControlTogglePlayPause://切换播放暂停(耳机线控)
break;
case UIEventSubtypeRemoteControlNextTrack://下一首

break;
case UIEventSubtypeRemoteControlPreviousTrack://上一首

break;
case UIEventSubtypeRemoteControlBeginSeekingBackward://开始快退
break;
case UIEventSubtypeRemoteControlEndSeekingBackward://结束快退
break;
case UIEventSubtypeRemoteControlBeginSeekingForward://开始快进
break;
case UIEventSubtypeRemoteControlEndSeekingForward://结束快进
break;
default:
break;
}
}

到这里为止,锁屏播放就完成了,Demo中附有完整的音乐播放器,Demo下载地址:Demo。最后,希望这篇文章对各位看官们有所帮助。对支持小编的看官们表示感谢。

你可能感兴趣的:(OC-锁屏播放)