适配iOS 11音频播放锁屏界面没有显示锁屏信息

1、在工程设置中Capabilities

适配iOS 11音频播放锁屏界面没有显示锁屏信息_第1张图片
部分界面截图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 方法中,如果在没有加入这段代码的情况下会出现的问题是,锁屏后可以听到播放的声音,并且在控制中心中可以看到当前播放数据如图

适配iOS 11音频播放锁屏界面没有显示锁屏信息_第2张图片
部分界面截图2.PNG

可以看到当前的播放控制的状态未暂停状态,所有加载刚才的适配代码后可以完成和你当前播放器播放状态同步,锁屏界面就可以显示出你想要看到的数据了。

适配iOS 11音频播放锁屏界面没有显示锁屏信息_第3张图片
部分界面截图3.PNG

就这样完成了iOS 11 音频锁屏界面信息适配,写的不好,勿怪。。。。。。。

你可能感兴趣的:(适配iOS 11音频播放锁屏界面没有显示锁屏信息)