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

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 音频锁屏界面信息适配,写的不好,勿怪。。。。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,925评论 25 709
  • 春天, 有花儿开放, 有动物发情, 有人读诗, 很多人以为很美丽的日子. 我却以为, 有细胞死亡, 有万物生长, ...
    玉_82阅读 134评论 0 1
  • 今天重点总结「こそあど」系列中的常用疑问词。 特殊疑问句 前面讲名词谓语句的疑问句式时,介绍了一般疑问句,即不包含...
    不帅任你踹阅读 4,045评论 2 8
  • 周末,朋友圈被上半年结束刷屏,大家都在对进入下半年寄语,如果说16年夏天有什么值得高兴的事,那或许就是被北京大学光...
    崴脚大叔_管宁阅读 908评论 0 14
  • 还是没忍住。 又给你发信息了,在和别人聊天的时候走想起你,想起我们说过的话,心不在焉,就给你发了条信息过去。 ...
    晨定阅读 139评论 0 0