说明:
AudioServices适合播放短音频
AVAudioPlayer适合播放比较长的音乐
一、短音乐播放:
1.定义SystemSoundID成员变量,初始化SystemSoundID:
//短音乐:成员变量
@property (nonatomic, assign) SystemSoundID soundID;
/*
短音乐:初始化SystemSoundID
*/
- (SystemSoundID)soundID{
if(!_soundID){
//加载音乐文件
NSURL *url = [[NSBundle mainBundle] URLForResource:@"music.mp3" withExtension:nil];
//初始化SystemSoundID
AudioServicesCreateSystemSoundID((__bridge CFURLRef)url, &_soundID);
}
return _soundID;
}
2.开始播放:
/*
短音乐:开始播放
*/
- (void)playShortSound{
//播放音乐
AudioServicesPlaySystemSound(self.soundID);
}
3.停止播放:
/*
短音乐:停止播放
*/
- (void)stopShortSound{
//停止播放
AudioServicesDisposeSystemSoundID(self.soundID);
self.soundID = 0;
}
二、长音乐播放:
1.定义AVAudioPlayer成员变量,初始化AVAudioPlayer:
//长音乐:播放器
@property (nonatomic, strong) AVAudioPlayer *audio;
/*
长音乐:初始化AVAudioPlayer
*/
- (AVAudioPlayer *)audio{
if(!_audio){
//加载音乐文件
NSURL *url = [[NSBundle mainBundle] URLForResource:@"music.mp3" withExtension:nil];
//创建播放器
_audio = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
//获取音频会话
AVAudioSession *session = [AVAudioSession sharedInstance];
//设置音频会话类型
[session setCategory:AVAudioSessionCategorySoloAmbient error:nil];
//激活音频会话
[session setActive:YES error:nil];
}
return _audio;
}
2.开始播放:
/*
长音乐:开始播放
*/
- (void)playMusic{
//判断是否播放中
if([self.audio isPlaying]){
return;
}
//缓冲
[self.audio prepareToPlay];
//开始播放
[self.audio play];
}
3.暂停播放:
/*
长音乐:暂停播放
*/
- (void)pauseMusic{
//判断是否播放中
if(![self.audio isPlaying]){
return;
}
//暂停
[self.audio pause];
}
4.停止播放:
/*
长音乐:停止播放
*/
- (void)stopMusic{
//判断是否播放中
if(![self.audio isPlaying]){
return;
}
//停止播放
[self.audio stop];
}
三、允许在后台播放音乐:
1.重写AppDelegate.m的applicationDidEnterBackground方法:
/*
系统方法:进入后台时触发
*/
- (void)applicationDidEnterBackground:(UIApplication *)application {
//让APP在后台保持运行
[application beginBackgroundTaskWithExpirationHandler:nil];
}
2.在Info.plist文件中增加后台音乐播放配置:
方式1:
以Source Code方式打开Info.plist文件,在dict节点中增加如下代码:
<dict>
…
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
</dict>
方式2:
以Property List方式打开Info.plist文件,在Information Property List中增加”Required background modes”,展开在Item 0的Value中输入”App plays audio or streams audio/video using AirPlay”。
3.初始化时创建音频会话,设置会话类型并激活:
//获取音频会话
AVAudioSession *session = [AVAudioSession sharedInstance];
//设置音频会话类型
[session setCategory:AVAudioSessionCategorySoloAmbient error:nil];
//激活音频会话
[session setActive:YES error:nil];