1、在工程设置中Capabilities<background Modes
部分界面截图1.png
2、显示当前播放歌曲的信息设置 没有适配iOS 11的情况下,正常情况下
#pragma mark - 锁屏界面信息相关
- (void)updateLockScreen
{
NSString *ItemPropertyTitle ;
NSString *ItemPropertyArtist;
ItemPropertyTitle =@"标题";
ItemPropertyArtist = @"作者";
NSMutableDictionary *info = [NSMutableDictionary dictionary];
//标题
info[MPMediaItemPropertyTitle] = ItemPropertyTitle;
//作者
info[MPMediaItemPropertyArtist] = ItemPropertyArtist;
//专辑
info[MPMediaItemPropertyAlbumArtist] = @"gg";
if (![ZPlayView SharedInstacce].logoImageView.image) {
//图片
info[MPMediaItemPropertyArtwork]= [[MPMediaItemArtwork alloc]initWithImage:[UIImage imageNamed:@"default_image"]];
}else {
//图片
info[MPMediaItemPropertyArtwork]= [[MPMediaItemArtwork alloc]initWithImage:image];
}
if (!self.isZB) {//是否是直播 直播无法计算播放时长
//设置歌曲时长
[info setObject:[NSNumber numberWithDouble:self.playProgress.maximumValue] forKey:MPMediaItemPropertyPlaybackDuration];
//设置已经播放时长
[info setObject:[NSNumber numberWithDouble:self.playProgress.value] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
}else {//普通音频,可以计算出时长
//设置歌曲时长
[info setObject:[NSNumber numberWithDouble:self.playProgress.maximumValue] forKey:MPMediaItemPropertyPlaybackDuration];
//设置已经播放时长
[info setObject:[NSNumber numberWithDouble:self.playProgress.value] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
}
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = info;
}
成为第一响应者
// 成为响应者方法
- (BOOL)canBecomeFirstResponder {
return YES;
}
#pragma mark - 远程控制
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{
// 判断对应事件, 做出处理
if (event.type == UIEventTypeRemoteControl) {
switch (event.subtype) {
case UIEventSubtypeRemoteControlPlay:
case UIEventSubtypeRemoteControlPause: {//播放和暂停
[vc playerButtonClick:nil];
}
break;
case UIEventSubtypeRemoteControlNextTrack: {//下一首
[vc rightClick:nil];
}
break;
case UIEventSubtypeRemoteControlPreviousTrack: {//上一首
[vc leftClick:nil];
}
break;
default:
break;
}
}
}
适配iOS 11 代码
//更新字典
if (@available(iOS 11.0, *)) {//判断是不是iOS 11
//根据当前播放器的播放状态显示控制器中心的播放状态
if ([YHHAVPlayer shareInstance].playing) {
[MPNowPlayingInfoCenter defaultCenter].playbackState = MPNowPlayingPlaybackStatePlaying;
}else {
[MPNowPlayingInfoCenter defaultCenter].playbackState = MPNowPlayingPlaybackStatePaused;
}
}
加入在updateLockScreen 方法中,如果在没有加入这段代码的情况下会出现的问题是,锁屏后可以听到播放的声音,并且在控制中心中可以看到当前播放数据如图
部分界面截图2.PNG
可以看到当前的播放控制的状态未暂停状态,所有加载刚才的适配代码后可以完成和你当前播放器播放状态同步,锁屏界面就可以显示出你想要看到的数据了。
部分界面截图3.PNG
就这样完成了iOS 11 音频锁屏界面信息适配,写的不好,勿怪。。。。。。。