1. 如果应用需要后台播放:那么在appdelegate 中添加

[AVAudioSession *session = [AVAudioSession sharedInstance];

 [session setCategory:AVAudioSessionCategoryPlayback error:nil]];

2. 锁屏显示歌曲信息:主要思路就是将自定义播放器中的歌曲信息和系统中MPNowPlayingInfoCenter播放器管连接起

第一步在自定义播放器界面添加库文件#import <MediaPlayer/MPNowPlayingInfoCenter.h>

第二步:创建函数(这个函数里面实现的是将歌曲信息负值给MPplayingcenter)

-(vold)configplayingInfo{



if(NSClassFromString(@"MPNowPlayingInfoCenter")){





  NSMutableDictionary *dic=[NSMutableDictionary alloc] init];

 [dic setObject:[NSNumber numberWithDouble:zongtime] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime]--这个是将歌曲总时间复制给系统播放器;



===MPMediaItemPropertyPlaybackDuration《当前时间》

MPMediaItemPropertyTitle《歌曲名》



MPMediaItemPropertyArtist《歌手》

MPMediaItemPropertyArtwork《歌曲封面图片》





MPNowPlayingInfoPropertyPlaybackRate《这个是设定系统播放器每秒的速率》

设置为1

(注意:上面的时间用

[【NSNumber numberWithDouble:当前时间】函数

)



     复制给系统播放器



 [[【MPNowPlayingInfoCenter defaultCenter]setNowPlayingInfo:dict】;:dict];





}

到此播放器的后台播放和封面显示就完成了,当然如果你要给你的播放器添加远程控制比如锁屏情况下上一首,下一首等操作

那么就需要添加能够接受远程控制事件

第一步:在appdelegate中添加

[appldcation  beginReceivingRemoteControlEvents];

    //这个是给应用添加能接受远程控制(比如远程控制播放界面也要设置)

 [self becomeFirstResponder];

第一行代码是给应用添加远程控制事件告诉系统我已经准备好接受你的控制了

第二步:在进入后台函数中

- (void)applicationDidEnterBackground:(UIApplication *)application {

    

//    NSLog(@"3333");

//告诉系统静如后台我要接受系统音乐播放器的控制事件

    [application beginReceivingRemoteControlEvents];  

}

好了,这一步做完以后我们还要给自定义播放器界面添加能够接受远程事件的代码

 

第三步:在musicVC中

-(void)viewDidAppear:(BOOL)animated{



 [super viewDidAppear:animated];

    UIDevice *device = [UIDevice currentDevice];

    BOOL backgroundSupported = NO;

    if ( [device respondsToSelector:@selector(isMultitaskingSupported)] )

    {

        backgroundSupported = device.multitaskingSupported;

    }

    

    if ( backgroundSupported == YES )

    {

        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

        //注意这里,告诉系统已经准备好了

        [self becomeFirstResponder];

    }







}

//这个函数时将此界面设为第一响应者



-(BOOL)canBecomeFirstResponder{

    

    return YES;

    

}

然后再实现下面这个函数



-(void)remoteControlReceivedWithEvent:(UIEvent *)event

{

    

//    NSLog(@"dddd");

    

    if(event.type==UIEventTypeRemoteControl){

        switch(event.subtype){

                

                

            case UIEventSubtypeRemoteControlPlay:

                

              NSLog(@"11111");

            {  [self playBtClick:self.playBt];

//                [self.player startPlay];

               // 切换播放、暂停按钮

                break;}

                

            case UIEventSubtypeRemoteControlPreviousTrack:{

               

              [self lastBtClick];// 播放上一曲按钮

                break;}

                

            case UIEventSubtypeRemoteControlNextTrack:{

                

              [self nextBtClick];

            

//                [self.player nextSong];

                // 播放下一曲按钮

                break;}

                

            case UIEventSubtypeRemoteControlTogglePlayPause:{

//                NSLog(@"222");

                //暂停

//             [self.player puasePlay];

                

                                [self playBtClick:self.playBt];

                

            



                

                // 播放下一曲按钮

                break;

            }

            case UIEventSubtypeRemoteControlPause:{

//                [self.player lastSong];

                [self playBtClick:self.playBt];

          



            

                break;}

            default:

                break;

    

        }





}

}

到此音乐的后台播放,封面显示,封面控制完成了,但是此后台不是正真的后台(因为进入后台以后10分钟以后就自动死掉了)代码写的比较乱,望见谅

 

 

 

 

 

 

 

 

}