事情原由:
公司有個(gè)商家版的App, 收款時(shí)有個(gè)語(yǔ)音播報(bào)的功能, 但是周天時(shí)老板說(shuō)有個(gè)客戶反饋這這兩天的收款到賬語(yǔ)音播報(bào)沒(méi)有聲音, 然后經(jīng)理找我測(cè)試了下(不在公司, 電話里配合經(jīng)理測(cè)試), 竟然發(fā)現(xiàn)iOS12的手機(jī)可以播報(bào), iOS11.4的不能播報(bào), 確實(shí)周五因?yàn)樯a(chǎn)證書(shū)過(guò)期重新配置了, 但是測(cè)試時(shí)也沒(méi)問(wèn)題的(我的iOS12), 所以不可能是極光推送證書(shū)的問(wèn)題啦. 初步懷疑是iOS11系統(tǒng)的問(wèn)題, 因?yàn)槲覜](méi)有手機(jī)測(cè)試不了. 經(jīng)理說(shuō)不急, 周一回來(lái)再測(cè)吧.
原因分析:
周一, 我拿著iOS11.4的手機(jī)跑了一下, 測(cè)試沒(méi)有播報(bào)的聲音, 但是能收到推送通知, 檢測(cè)了手機(jī)是否為靜態(tài), 然后進(jìn)入程序調(diào)大音量, 看是不是音量小導(dǎo)致的, 但是沒(méi)仔細(xì)看只注意到音量條調(diào)最大, 還是沒(méi)聲音, 這時(shí)我想是不是手機(jī)有點(diǎn)毛病, 打開(kāi)個(gè)有背景音的應(yīng)用看看? 所以打開(kāi)了吃雞游戲, 果然有聲音, 還調(diào)節(jié)了一下, 注意到了音量調(diào), 也注意到了音量條上文字“音量”, 然后我想到了什么, 回到我們的應(yīng)用, 在次調(diào)節(jié)音量, 音量條上的文字變成了“鈴聲”, 這下子明白了. 因?yàn)槲以俪噪u那里把聲音音量調(diào)大了, 回到我們的應(yīng)用再次測(cè)試, 這下果然聽(tīng)到了久違的收款播報(bào)聲音.
分析結(jié)果:
音量按鈕調(diào)節(jié)的聲音有幾種模式:調(diào)節(jié)鈴聲的(系統(tǒng)的聲音音量), 調(diào)節(jié)音量的(多媒體的音量).
解決一:
為了實(shí)現(xiàn)我們進(jìn)入應(yīng)用按鈕音量鍵調(diào)節(jié)的是多媒體的音量, 我找到一個(gè)方法:到設(shè)置了設(shè)置
-
1.打開(kāi)設(shè)置, 找到聲音與觸感
-
2.進(jìn)入聲音與觸感, 關(guān)閉“用按鈕調(diào)整”
設(shè)置完成后進(jìn)入應(yīng)用調(diào)節(jié)聲音, 此時(shí)變成調(diào)節(jié)多媒體的音量了, 但是這里有個(gè)問(wèn)題, 我們?cè)O(shè)置了系統(tǒng)設(shè)置, 必定回影響手機(jī)其他地方, 這樣不大好, 這個(gè)得優(yōu)化.
解決二:
就吃雞而言, 在沒(méi)有設(shè)置系統(tǒng)聲音按鈕鍵的時(shí), 音量按鈕調(diào)節(jié)的是鈴聲, 進(jìn)入吃雞游戲時(shí), 調(diào)節(jié)變?yōu)槎嗝襟w音量, 這里肯定有有個(gè)API設(shè)置系統(tǒng)音量控制的, 于是查找資料終于找到了答案:
如下:
[[AVAudioSession sharedInstance] setActive:YES error:nil];
這個(gè)API就是設(shè)置按鈕控制多媒體音量的, YES
為按鈕控制多媒體音量, NO
控制鈴聲音量.
我們想要實(shí)現(xiàn)的效果是進(jìn)入程序中, 聲音按鈕控制多媒體音量, 不受系統(tǒng)設(shè)置影響, 也不影響其他地方的設(shè)置. 實(shí)現(xiàn):
在AppDelegate.m文件中加入
最后:
至于客戶那邊, 按解決一方案設(shè)置, 還是沒(méi)有聲音, 最后是重啟手機(jī), 才有了播報(bào)聲音(這就有點(diǎn)坑了).
在這里想說(shuō)的時(shí), 重啟很強(qiáng)大, 遇到問(wèn)題先重啟, 重啟都解決不了問(wèn)題才是真的有問(wèn)題.這時(shí)再慢慢找問(wèn)題,解決問(wèn)題吧.