iOS - 音频后台播放设置及锁屏界面的显示与控制

音频后台播放设置

1、先在项目 的Capabilities中进行设置,开启后台模式

iOS - 音频后台播放设置及锁屏界面的显示与控制_第1张图片

2、激活音频会话

其它地方也可以,只要保证能执行到以下代码块的内容即可,这里我选择在AppDelegate.m里设置

先导入必要的头文件

#import 
接下来直接示例代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    // 1.获取音频会话
    AVAudioSession *session = [AVAudioSession sharedInstance];
    
    // 2.设置后台播放类别
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];
    
    // 3.激活会话
    [session setActive:YES error:nil];
    
    return YES;
}

锁屏界面的显示与控制

在对应的控制器下添加以下代码,我以PlayingViewController.m为例


PlayingViewController.m

先导入头文件

#import 

锁屏界面信息的显示:

/*
 // MPMediaItemPropertyAlbumTitle           专辑标题
 // MPMediaItemPropertyAlbumTrackCount      声道个数
 // MPMediaItemPropertyAlbumTrackNumber     左右声道
 // MPMediaItemPropertyArtist               艺术家(歌曲作者)
 // MPMediaItemPropertyArtwork              锁屏界面的封面
 // MPMediaItemPropertyComposer
 // MPMediaItemPropertyDiscCount
 // MPMediaItemPropertyDiscNumber
 // MPMediaItemPropertyGenre
 // MPMediaItemPropertyPersistentID
 // MPMediaItemPropertyPlaybackDuration     播放时长
 // MPMediaItemPropertyTitle
 */
#pragma mark - 设置锁屏界面的信息
/** 这个方法在开始播放音乐的时候手动调用 */
-(void)setupLockScreenInfo
{
    // 0.获取当前正在播放的歌曲
    LXFMusic *playingMusic = [LXFMusicTool playingMusic];
    
    // 1.获取锁屏界面中心
    MPNowPlayingInfoCenter *playingInfoCenter = [MPNowPlayingInfoCenter defaultCenter];
    
    // 2.设置展示的信息
    NSMutableDictionary *playingInfo = [NSMutableDictionary dictionary];
    // 设置歌曲标题
    [playingInfo setObject:playingMusic.name forKey:MPMediaItemPropertyAlbumTitle];
    // 设置歌手
    [playingInfo setObject:playingMusic.singer forKey:MPMediaItemPropertyArtist];
    // 设置封面
    MPMediaItemArtwork *artWork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:playingMusic.icon]];
    [playingInfo setObject:artWork forKey:MPMediaItemPropertyArtwork];
    // 设置歌曲播放的总时长
    [playingInfo setObject:@(self.currentPlayer.duration) forKey:MPMediaItemPropertyPlaybackDuration];
    
    playingInfoCenter.nowPlayingInfo = playingInfo;
    
    // 3.让应用程序可以接受远程事件
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
}
现在可以在锁屏下正常显示歌曲信息了,但是控制不了音乐,还差监听远程控制事件

/** 监听远程事件 */
-(void)remoteControlReceivedWithEvent:(UIEvent *)event
{
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlPlay: // 播放
        case UIEventSubtypeRemoteControlStop: // 暂停
            [self playOrPause]; // 控制播放与暂停
            break;            
        case UIEventSubtypeRemoteControlNextTrack: // 下一首
            [self next]; // 控制播放下一首
            break;            
        case UIEventSubtypeRemoteControlPreviousTrack: // 上一首
            [self previous]; // 控制播放上一首
            break;            
        default:
            break;
    }
}
以上监听事件只提供逻辑思路,具体的控制歌曲的方法内容太多就不写了

你可能感兴趣的:(iOS开发)