System Sound Services 播放音效
使用 System Sound Services方式只適合播放提示或者警告短小音頻
聲音長度不能超過30秒
聲音文件必須是 PCM 或者是 IMA4(IMA/ADPCM) 格式。
必須是 .caf、.aif 藤乙、.wav 、的文件
不能控制播放進度
沒有循環(huán)播放
iOS使用系統(tǒng)聲音服務(wù)來支持三種不同的通知:
- 聲音:立刻播放一個簡單的聲音文件荡澎。如果手機被設(shè)置為靜音,用戶什么也聽不到
- 提醒:播放一個聲音文件,如果手機被設(shè)置為靜音或震動,將通過震動提醒用戶
- 震動:震動手機固翰,而不考慮其他設(shè)置
對于提醒音來說狼纬,與系統(tǒng)聲音之間的差別在于羹呵,如果手機處于靜音狀態(tài),提醒音將自動觸發(fā)震動疗琉。提醒音的設(shè)置和用法與系統(tǒng)聲音相同冈欢,區(qū)別在于系統(tǒng)聲音調(diào)用 AudioServicesPlaySystemSound
,而提醒音調(diào)用AudioServicesPlayAlertSound
盈简。
調(diào)用AudioServicesCreateSystemSoundID(CFURLRef inFileURL,SystemSoundID* outSystemSoundID)
函數(shù)注冊音頻文件凑耻,第一個參數(shù)代表音頻文件的URL(可通過NSURL 轉(zhuǎn)換為CFURLRef),迭戈參數(shù)代表注冊該音頻的 SystemSoundID 。
當需要播放音頻的時候柠贤,調(diào)用
AudioServicesPlaySystemSound(SystemSoundID inSystemSoundID)
立刻播放一個簡單的聲音文件香浩。如果手機被設(shè)置為靜音,用戶什么也聽不到
AudioServicesPlayAlertSound(SystemSoundID inSystemSoundID)
播放一個聲音文件并震動臼勉,如果手機被設(shè)置為靜音或震動(與用戶在設(shè)置
-聲音
-響鈴模式震動
邻吭、靜音模式震動
設(shè)置有關(guān)),那么將通過無提醒或震動提醒用戶宴霸!
代碼
首先 在項目中導入一個音頻文件囱晴,注意是符合上述格式的音頻
再導入頭文件
#import <AudioToolbox/AudioToolbox.h>
在ViewController.m 中
-(void)sound{
SystemSoundID soundID;
//NSBundle來返回音頻文件路徑
NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"dingdong" ofType:@"wav"];
//建立SystemSoundID對象,但是這里要傳地址(加&符號)瓢谢。 第一個參數(shù)需要一個CFURLRef類型的url參數(shù)畸写,要新建一個NSString來做橋接轉(zhuǎn)換(bridge),而這個NSString的值氓扛,就是上面的音頻文件路徑
AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:soundFile], &soundID);
//播放提示音 帶震動
AudioServicesPlayAlertSound(soundID);
//播放系統(tǒng)聲音
// AudioServicesPlaySystemSound(soundID);
}
Demo地址:下載