iOS后臺(tái)語音播報(bào)技術(shù)實(shí)現(xiàn)

記錄一下前段時(shí)間的產(chǎn)品提出的坑爹需求碍沐。前段時(shí)間要求實(shí)現(xiàn)商家收款訂單的語音播報(bào)功能, 并且要求實(shí)現(xiàn)的功能是點(diǎn)擊APP進(jìn)入后臺(tái)或者APP進(jìn)程殺死之后辙浑,依舊能收到語音播報(bào)激涤,于是只能考慮蘋果的推送擴(kuò)展(Notification Service Extension), 在網(wǎng)上查找了一番教程之后,發(fā)現(xiàn)蘋果在iOS12.1后就禁用了里面的AVAudioPlayer
image.png

于是開始了漫漫填坑之路判呕,由于要求app后臺(tái)也能播報(bào)倦踢,那么就只能使用推送進(jìn)行。好在蘋果雖然禁用了語音推送侠草,但推送時(shí)的sounds我們還可以自定義(沒錯(cuò)辱挥,就是我們平常微信聽到的那聲叮咚!)這個(gè)sounds有個(gè)最大播放時(shí)長(zhǎng),大概是在10s左右边涕,所以語音文字不能太長(zhǎng)晤碘,語速也盡量控制的快一點(diǎn),我們是直接上萬能的淘寶找人專門錄了一套語音文件功蜓,包括xxx收款园爷,個(gè)十百千萬,1234567890等等這些式撼。然后再根據(jù)收到的錢進(jìn)行語音拼接合成童社。

之后又遇到個(gè)新的問題,推送擴(kuò)展和主項(xiàng)目工程其實(shí)相當(dāng)于兩個(gè)獨(dú)立的target著隆,我們將語音文件放在主工程目錄下扰楼,Notification Service Extension是無法直接訪問聲音文件的。---這個(gè)時(shí)候就需要用到APP Group了美浦。下面是APP Group的介紹

  • AppGroup allows data sharing between two different apps or even app and widgets by creating one common shared path (like document directory). Data saved over there can be accessed by any app which is associated with that particular AppGroup. It is an offline data sharing between apps.
    這段蘋果說明告訴我們:App Groups可以使兩個(gè)不同的Target(或者APP與其Extension)之間進(jìn)行數(shù)據(jù)共享弦赖。

AppGroup的創(chuàng)建也非常簡(jiǎn)單:
1.在Apple Developer中配置APP的App ID時(shí),勾選AppGroups選項(xiàng):


image.png

2.創(chuàng)建AppGroup


image.png

3.將APP Groups添加到APP ID中抵代√诮冢回到步驟1創(chuàng)建的APP ID那里,可以看到APP Groups選項(xiàng)為黃色待編輯狀態(tài),點(diǎn)擊Edit將步驟2創(chuàng)建的APP Groups添加進(jìn)去
image.png

4.將APP Groups添加到Xcode工程中
image.png

處理好了APPGroup之后案腺。檢查項(xiàng)目工程目錄應(yīng)該會(huì)是這樣子
image.png

這樣處理好了之后就可以在NotificationServiceExtension里面愉快的訪問聲音文件了庆冕。之后我們只需要在NotificationServiceExtension解析推送數(shù)據(jù),合成語音劈榨,播放即可访递。下面上代碼,文中會(huì)有注釋


image.png

image.png

PS:關(guān)于代碼中的拼接播報(bào)語音同辣,之前我們是想本地合成語音來著拷姿,但是由于收到推送后再臨時(shí)去合成語音+播放,這個(gè)時(shí)間太短(推送的那聲sounds也就10s~)怕來不及旱函,就采用了先后臺(tái)合成語音片段再推送過來的方式响巢。并且安卓那邊也采用后臺(tái)合成的語音片段,便于兩端統(tǒng)一棒妨。

最后總結(jié)一下邏輯實(shí)現(xiàn)踪古,通過Notification Service Extension實(shí)現(xiàn)后臺(tái)播報(bào),通過AppGroups實(shí)現(xiàn)聲音文件訪問券腔。最后再通過修改推送sounds實(shí)現(xiàn)播報(bào)語音的目的伏穆。缺點(diǎn)是語音不能太長(zhǎng),所以字盡量精簡(jiǎn)纷纫,播報(bào)文件的語速盡量放快枕扫。另外,項(xiàng)目采用極光推送辱魁,需要將mutable-content設(shè)置為1才可生效

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烟瞧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子商叹,更是在濱河造成了極大的恐慌燕刻,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件剖笙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡请唱,警方通過查閱死者的電腦和手機(jī)弥咪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來十绑,“玉大人聚至,你說我怎么就攤上這事”境龋” “怎么了扳躬?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我贷币,道長(zhǎng)击胜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任役纹,我火速辦了婚禮偶摔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘促脉。我一直安慰自己辰斋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布瘸味。 她就那樣靜靜地躺著宫仗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旁仿。 梳的紋絲不亂的頭發(fā)上锰什,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音丁逝,去河邊找鬼汁胆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛霜幼,可吹牛的內(nèi)容都是我干的嫩码。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼罪既,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼铸题!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起琢感,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤丢间,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后驹针,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烘挫,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年柬甥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饮六。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苛蒲,死狀恐怖卤橄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情臂外,我是刑警寧澤窟扑,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布喇颁,位于F島的核電站,受9級(jí)特大地震影響嚎货,放射性物質(zhì)發(fā)生泄漏橘霎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一厂抖、第九天 我趴在偏房一處隱蔽的房頂上張望茎毁。 院中可真熱鬧,春花似錦忱辅、人聲如沸七蜘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽橡卤。三九已至,卻和暖如春损搬,著一層夾襖步出監(jiān)牢的瞬間碧库,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工巧勤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嵌灰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓颅悉,卻偏偏與公主長(zhǎng)得像沽瞭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剩瓶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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