iOS从4.0之后支持后台播放声音了。下面是实现声音文件播放,并且用户关闭屏幕之后仍然能够播放声音文件。具体的实现方法如下:
在plist文件中加入下面的字段:
声明内容如下:
Info.plist中添加UIBackgroundModes键值,它包含一个或多个string的值,包括
audio:在后台提供声音播放功能,包括音频流和播放视频时的声音
location:在后台可以保持用户的位置信息
voip:在后台使用VOIP功能
在程序中添加:
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil]; [session setCategory:AVAudioSessionCategoryPlayback error:nil];
声明声音在后台运行。最后运行程序,关闭程序,声音则在后台成功播放。
1. //后台播放AVAudioSession *session = [AVAudioSession sharedInstance];[session setActive:YES error:nil];[session setCategory:AVAudioSessionCategoryPlayback error:nil];2. 让后台可以处理多媒体的事件
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
Remote-control events originate as commands issued by headsets and external accessories that are intended to control multimedia presented by an application. To stop the reception of remote-control events, you must call endReceivingRemoteControlEvents.
3.系统进入后台运行时,让程序可以运行一段时间。使用此方法争取一定的时间,在程序进入后台后处理一些事情。
- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:(void(^)(void))handlerThis method lets your application continue to run for a period of time after it transitions to the background.your application could call this method to ensure that had enough time to transfer an important file to a remote server or at least attempt to make the transfer and note any errors. You should not use this method simply to keep your application running after it moves to the background.2. 背景音乐播放,支持mp3格式
需要先导入框架及代码中#import <AVFoundation/AVFoundation.h>NSString *musicPath = [[NSBundle mainBundle] pathForResource:@"backgrounmusic" ofType:@"mp3"]; NSURL *url = [[NSURL alloc] initFileURLWithPath:musicPath]; AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; // 创建播放器 self.myBackMusic = player; //赋值给自己定义的类变量 [url release]; [player release]; [myBackMusic prepareToPlay]; [myBackMusic setVolume:1]; myBackMusic.numberOfLoops = -1; //设置音乐播放次数 -1为一直循环 if(mainMusicStatus) { [myBackMusic play]; //播放 }