最近開發(fā)App時历等,需要用到聲音服務(wù)。在查閱資料和文檔后产弹,發(fā)現(xiàn)iOS上播放聲音有好幾種方法两疚。準備針對每種方法寫一篇文章來詳細說明床估。一來可以推動自己查閱文檔教程來對聲音播放進行深入了解,二來希望可以幫忙到有需要的人诱渤。
簡介
iOS 播放聲音有很多種方式丐巫,其中系統(tǒng)聲音服務(wù)應該是最簡單的了。但我們使用起來要小心,因為使用系統(tǒng)聲音服務(wù)時會有一些限制
- 聲音不能超過30秒
- 支持的文件格式有限递胧,具體的說只有CAF碑韵、AIF和使用PCM或IMA/ADPCM數(shù)據(jù)的WAV文件。
三種類型
播放系統(tǒng)聲音有三種類型:
- 聲音:播放一個聲音文件缎脾。但是如果手機靜音祝闻,用戶什么也聽不見。
- 提醒:播放一個聲音文件遗菠,如果手機設(shè)為靜音或震動联喘,這時會通過震動提醒用戶。
- 震動:震動手機辙纬,而不考慮其他設(shè)置豁遭。
具體代碼實現(xiàn)
聲音類型
import AudioToolbox
var soundID:SystemSoundID = 0
let path = Bundle.main.path(forResource: "msg", ofType: "wav")!
let url = URL(fileURLWithPath: path)
AudioServicesCreateSystemSoundID(url as CFURL, &soundID)
AudioServicesPlaySystemSound(soundID)
提醒類型
import AudioToolbox
var soundID:SystemSoundID = 0
let path = Bundle.main.path(forResource: "msg", ofType: "wav")!
let url = URL(fileURLWithPath: path)
AudioServicesCreateSystemSoundID(url as CFURL, &soundID)
AudioServicesPlayAlertSound(soundID)
震動類型
import AudioToolbox
let soundID = SystemSoundID(kSystemSoundID_Vibrate)
AudioServicesPlaySystemSound(soundID)
結(jié)束回調(diào)
AudioServicesAddSystemSoundCompletion(soundID, nil, nil, { (soundID, clientData) in
print("End of playing voice.")
}, nil)
總結(jié)
- 記得import AudioToolbox系統(tǒng)庫
- 使用系統(tǒng)聲音時要注意聲音文件的一些限制
- 系統(tǒng)聲音服務(wù)有三種類型蓖谢,它們之間有一些細小區(qū)別,使用時注意選擇適合自己需求的類型
- 如果你需要獲取播放結(jié)束時的回調(diào)接口譬涡,使用AudioServicesAddSystemSoundCompletion蜈抓,三種類型都支持結(jié)束回調(diào)