大家应该都有玩过斗地主吧,斗地主其实里面你出A,什么K啊之类的牌其实就是会播放音效,其实就是一种音效效果,音效播放最大时长不能超过30S,苹果有写的,还有就是这个音频支持的格式为:CAF、AIF和使用PCM或IMA-ADPCM数据的WAV文件,其中CAF格式和AIF格式都是苹果公司自己开发的。而PCM和IMA-ADPCM是一种编码方式。
具体的实现步骤,其实应用起来比较简单,我们其实只需要去导入AVFoundation框架,然后去创建音效文件,然后再去播放音效文件就可以了。
简单说下SoundID其实就是音效的ID,音效的播放和销毁都需要用到它
ios9新增的在播放完音效之后可以带有回调的方法
AudioServicesPlayAlertSoundWithCompletion([self loadSoundIDWithURL:url], ^{
NSLog(@"---------");
});
具体实现,首先创建音效文件的话,一般是从本地去读取文件,然后去播放,具体代码如下所示
//1、创建URL地址
NSURL * url = [[NSBundle mainBundle]URLForResource:@"bu.wav" withExtension:nil];
//2、设置系统的音效文件
SystemSoundID soundID;
//3、创建音效文件
AudioServicesCreateSystemSoundID((__bridge CFURLRef _Nonnull)(url), &soundID);
//4、播放音效文件,带振动的播放
AudioServicesPlayAlertSound(soundID);
//如果是不带振动的话那就是
AudioServicesPlaySystemSound(soundID);
//5、不需要播放了,就去释放音效所占用的内存
//AudioServicesDisposeSystemSoundID(soundID);
还有就是有的时候音效我们可能需要各个控制器都需要使用的,我们最好去抽取一个工具类出来,然后再去调用方法。比如说我们可以在工具类中写能直接传入URL就可以分别播放带振动和不带振动的音效的方法,以及清除音效文件缓存的方法,等等操作。
还有需要注意的是我们这里使用上面的这种方式只是适合播放提示或者警告的短的音频。长音频肯定不适合,毕竟最长30s。不能控制播放的进度,没有提供控制音量的功能。