方式一:使用AVAudioPlayer播放音乐
特点:自定制化程度高
注意点:
AVAudioPlayer 需要设置成全局的, 否则会被过早释放,而无法播放
NSError *error = nil;
NSString *outPutFilePath = [[NSBundle mainBundle]pathForResource:@"一" ofType:@"mp3"];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:outPutFilePath] error:&error];
if (error) {
NSLog(@"-------%@",error);
}
[_audioPlayer play];
方式二: 使用System Sound Services播放简短音频
特点:声音长度不能超过30s, 支持格式较少, 用于播放一些提示音或警告音
//MARK:播放本地音频
- (void)playLocaVoiceClick{
// 1. 定义要播放的音频文件的URL
NSURL *voiceURL = [[NSBundle mainBundle]URLForResource:@"unbelievable" withExtension:@"caf"];
// 2. 注册音频文件(第一个参数是音频文件的URL 第二个参数是音频文件的SystemSoundID)
AudioServicesCreateSystemSoundID((__bridge CFURLRef)(voiceURL),&ditaVoice);
// 3. 为crash播放完成绑定回调函数
// AudioServicesAddSystemSoundCompletion(ditaVoice,NULL,NULL,(void*)completionCallback,NULL);
// AudioServicesAddSystemSoundCompletion(ditaVoice, NULL, NULL, NULL, NULL);
// 4. 播放 ditaVoice 注册的音频 并控制手机震动
// AudioServicesPlayAlertSound(ditaVoice);
// AudioServicesPlaySystemSound(ditaVoice);
// AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); // 控制手机振动
AudioServicesPlayAlertSoundWithCompletion(ditaVoice,^{AudioServicesDisposeSystemSoundID(ditaVoice);
NSLog(@"播放完成");
});
}