AVPlayer 音乐播放后台播放,以及锁屏主题设置

Posted 有棱角的圆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AVPlayer 音乐播放后台播放,以及锁屏主题设置相关的知识,希望对你有一定的参考价值。

第一步:在appDelegate中通知app支持后台播放:在方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}

中添加如下代码:

 AVAudiosession *audioSession = [AVAudioSession sharedInstance];
    //默认情况下扬声器播放
    [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
    [audioSession setActive:YES error:nil];

第二步:在info.plist文件中添加一个key项

技术分享

第三步:在播放控制界面接受远程控制

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:YES];
    // 开始接受远程控制
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    [self resignFirstResponder];  
}

- (void)viewWillDisappear:(BOOL)animated
{
// 接触远程控制
    [[UIApplication sharedApplication] endReceivingRemoteControlEvents];
    [self becomeFirstResponder];
}
// 重写父类成为响应者方法
- (BOOL)canBecomeFirstResponder
{
    return YES;
}

第四步:对远程控制事件作出相应的操作

//重写父类方法,接受外部事件的处理
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
    NSLog(@"remote");
    if (receivedEvent.type == UIEventTypeRemoteControl) {
        
        switch (receivedEvent.subtype) { // 得到事件类型
                
            case UIEventSubtypeRemoteControlTogglePlayPause: // 暂停 ios6
                [self.player pause]; // 调用你所在项目的暂停按钮的响应方法 下面的也是如此
                break;
                
            case UIEventSubtypeRemoteControlPreviousTrack:  // 上一首
                
                [self lastMusic:nil];
                break;
                
            case UIEventSubtypeRemoteControlNextTrack: // 下一首
                [self nextMusic:nil];
                break;
                
            case UIEventSubtypeRemoteControlPlay: //播放
                [self playMusic:nil];
                break;
                
            case UIEventSubtypeRemoteControlPause: // 暂停 ios7
                [self playMusic:nil];
                break;
                
            default:
                break;
        }
    }
}

第五步:设置锁屏主题

注意这个播放仅需要在播放状态改变的时候调用,例如初始化播放器,上一首下一首等操作

//Now Playing Center可以在锁屏界面展示音乐的信息,也达到增强用户体验的作用。
////传递信息到锁屏状态下 此方法在播放歌曲与切换歌曲时调用即可

- (void)configNowPlayingCenter {
    NSLog(@"锁屏设置");
   // BASE_INFO_FUN(@"配置NowPlayingCenter");
    NSMutableDictionary * info = [NSMutableDictionary dictionary];
    //音乐的标题
    [info setObject:self.nameLabel.text forKey:MPMediaItemPropertyTitle];
    //音乐的艺术家
   NSString *author= [[self.playlistArr[self.currentNum] valueForKey:@"songinfo"] valueForKey:@"author"];
    [info setObject:author forKey:MPMediaItemPropertyArtist];
    //音乐的播放时间
    [info setObject:@(self.player.currentTime.value) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
    //音乐的播放速度
    [info setObject:@(1) forKey:MPNowPlayingInfoPropertyPlaybackRate];
    //音乐的总时间
    [info setObject:@(self.totalTime) forKey:MPMediaItemPropertyPlaybackDuration];
    //音乐的封面
    MPMediaItemArtwork * artwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"0.jpg"]];
    [info setObject:artwork forKey:MPMediaItemPropertyArtwork];
    //完成设置
    [[MPNowPlayingInfoCenter defaultCenter]setNowPlayingInfo:info];
}

 

以上是关于AVPlayer 音乐播放后台播放,以及锁屏主题设置的主要内容,如果未能解决你的问题,请参考以下文章

iOS音乐后台播放及锁屏信息显示

后台播放音乐

iOS音乐后台播放锁屏封面及播放控制

iOS音乐后台播放锁屏封面及播放控制

AVPlayer播放网络音乐

vue锁屏或进入后台关闭背景音乐