iOS語音提醒開發(fā)總結(jié)

10.2 更新

開源了!以下優(yōu)化用于餓了么蜂鳥App中,項目鏈接在鏈接 ,歡迎 star 和 pr.

語音播放一直是一個較低頻的開發(fā)知識點,很多開發(fā)并沒有這樣的需求,所以導(dǎo)致在墻內(nèi)搜不到太多關(guān)于它的一些總結(jié)(主要是踩坑),剛好最近接了一個語音優(yōu)化的需求,將自己的經(jīng)驗與總結(jié)記錄下來.

首先要介紹微信團隊總結(jié)的一篇,給出了很多解決方案
https://mp.weixin.qq.com/s/yYCaPMxHGT9LyRyAPewVWQ

先列出待優(yōu)化的點

  • 在后臺播放音樂時,語音提醒之后音樂不會恢復(fù)播放.
  • 插耳機和揚聲器播放聲音忽大忽小
  • 在接聽電話時,會有語音播放,影響通話
  • 有時候播放語音有震動,有時候沒有

優(yōu)化1

當(dāng)有提示音播放時,后臺音樂被中斷且無法自動恢復(fù).
這個問題首先想到AVAudioSession 中 category 的設(shè)置問題,可以根據(jù)下圖結(jié)合 app 的實際需求去選擇合適的一個.


AVAudioSession 的類型

設(shè)置完成之后要注意是否在播放完成的代理方法中執(zhí)行了:

function.png

這里還要注意一點,AVAudioSession在設(shè)置 category 的時候支持傳入 options,來對設(shè)置的 category 來微調(diào).參看LPDSoundService.

category.png

優(yōu)化2

插耳機和揚聲器播放聲音音量不穩(wěn)定這個問題,首先去定位播放的聲音文件,發(fā)現(xiàn)聲音文件確實存在幾個聲音高低的問題.
接下來再去找發(fā)現(xiàn)在耳機插入時存在短暫的聲音丟失,那我的優(yōu)化辦法是在監(jiān)聽耳機的狀態(tài)的方法里暫停播放0.1s.耳機的插入拔出會觸發(fā)這個通知AVAudioSessionRouteChangeNotification

function.png

接下來對音量處理參考微信的解決辦法,用MPVolumeView中的 slider 來處理音量的控制,但是把MPVolumeView加到了keyWindow上,參看LPDVolumeManager這個音量控制的單例類.

優(yōu)化3

在接電話的時候還有語音播放這個問題找了好久的解決辦法,后來發(fā)現(xiàn)自己犯傻了...
首先肯定是要在播放語音之前判斷當(dāng)前時候是否處在通話狀態(tài),輕松搜到CTCallCenter類,但是發(fā)現(xiàn)這個不起作用,那就去私有庫找找API(不上商店就是好),后來兜兜轉(zhuǎn)轉(zhuǎn)發(fā)現(xiàn)這個CTCallCenter是 iOS9以下,在10之后換成了CXCallObserver類,貼代碼,參看LPDTeleponyManager.

function.png

優(yōu)化4

有時候播放語音有震動,有時候沒有....
這個問題真是奇葩了,產(chǎn)品邏輯要求播放聲音的時候要求有震動,這簡單

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

但是突然發(fā)現(xiàn),有時候震動就突然沒了,調(diào)試發(fā)現(xiàn)方法也走了,最后無奈發(fā)現(xiàn)蘋果然后還有一手,

image.png

不開這一項,怎么震動...

總結(jié)

在做整個優(yōu)化的過程中踩了不少坑也花了不少時間,在調(diào)用 API 的時候最好自己看看上面的注釋,尤其是不熟悉的 API,能看官方文檔就看官方的.

參考資料

https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/ConfiguringanAudioSession/ConfiguringanAudioSession.html#//apple_ref/doc/uid/TP40007875-CH2-SW1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寥院,一起剝皮案震驚了整個濱河市儒陨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌接癌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箩朴,死亡現(xiàn)場離奇詭異丽已,居然都是意外死亡桃焕,警方通過查閱死者的電腦和手機亏钩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門莲绰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人姑丑,你說我怎么就攤上這事蛤签。” “怎么了栅哀?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵震肮,是天一觀的道長。 經(jīng)常有香客問我留拾,道長戳晌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任痴柔,我火速辦了婚禮沦偎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咳蔚。我一直安慰自己豪嚎,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布谈火。 她就那樣靜靜地躺著侈询,像睡著了一般。 火紅的嫁衣襯著肌膚如雪糯耍。 梳的紋絲不亂的頭發(fā)上扔字,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音谍肤,去河邊找鬼啦租。 笑死哗伯,一個胖子當(dāng)著我的面吹牛荒揣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播焊刹,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼系任,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虐块?” 一聲冷哼從身側(cè)響起俩滥,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贺奠,沒想到半個月后霜旧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡儡率,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年挂据,在試婚紗的時候發(fā)現(xiàn)自己被綠了以清。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡崎逃,死狀恐怖掷倔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情个绍,我是刑警寧澤勒葱,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站巴柿,受9級特大地震影響凛虽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜篮洁,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一涩维、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袁波,春花似錦瓦阐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至枷颊,卻和暖如春戳杀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夭苗。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工信卡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人题造。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓傍菇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親界赔。 傳聞我的和親對象是個殘疾皇子丢习,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容