一.设置后台播放
- 首先允许程序后台播放
- 代码实现
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 3 // 设置后台播放的代码,步骤 4 // 1.获取音频的会话 5 AVAudioSession *session = [AVAudioSession sharedInstance]; 6 // 2.设置后台播放类型 7 [session setCategory:AVAudioSessionCategoryPlayback error:nil]; 8 // 3.激活会话 9 [session setActive:YES error:nil]; 10 11 return YES; 12 }
二.锁屏界面
- 适当的时机调用这个方法
#pragma mark - 设置锁屏界面的信息 - (void)setupLockScreenInfo { // 1.获取当前正在播放的歌曲 ChaosMusic *playingMusic = [ChaosMusicTool playingMusic]; // 2.获取锁屏界面中心 MPNowPlayingInfoCenter *playingCenter = [MPNowPlayingInfoCenter defaultCenter]; // 3.设置展示的信息 NSMutableDictionary *playingInfo = [NSMutableDictionary dictionary]; playingInfo[MPMediaItemPropertyAlbumTitle] = playingMusic.name; playingInfo[MPMediaItemPropertyArtist] = playingMusic.singer; MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:playingMusic.icon]]; playingInfo[MPMediaItemPropertyArtwork] = artwork; playingInfo[MPMediaItemPropertyArtist] = @(self.player.currentTime); playingCenter.nowPlayingInfo = playingInfo; // 4.让应用程序可以接受远程事件 [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; }
- 实现了锁屏界面,没有实现监听远程事件的话,锁屏界面的下一首之类的按钮没有反应.实现下面的方法
1 // 监听远程事件 2 - (void)remoteControlReceivedWithEvent:(UIEvent *)event 3 { 4 switch (event.subtype) { 5 case UIEventSubtypeRemoteControlPlay: 6 case UIEventSubtypeRemoteControlPause: 7 [self startOrPause:nil]; 8 break; 9 10 case UIEventSubtypeRemoteControlNextTrack: 11 [self nextMusic:nil]; 12 break; 13 14 case UIEventSubtypeRemoteControlPreviousTrack: 15 [self previousMusic:nil]; 16 break; 17 18 default: 19 break; 20 } 21 }