關(guān)于android O 上 NotificationChannel 的一些注意事項(xiàng)

最近在適配android O,遇到個(gè)問題,應(yīng)用中原本有設(shè)置界面通過RingtonePreference 選擇鈴聲,set到notification中,彈出通知的時(shí)候notification播放該鈴聲,由于需要較明顯的提醒用戶,所以使用的是alarm類型的鈴聲(鈴聲時(shí)間長)。

然而到了O上,所有notification必須強(qiáng)制使用notification channel, 一旦使用了這個(gè),notification的鈴聲就由系統(tǒng)設(shè)置同一管理了,而且供選擇的鈴聲范圍限制在了預(yù)置的notification類型鈴聲(短促)和用戶自己的音樂等,原本想使用alarm類型的鈴聲這些沒法選了。

于是稍微研究了一下這個(gè)notification channel,發(fā)現(xiàn)應(yīng)用在創(chuàng)建的時(shí)候可以通過setSound() 方法來預(yù)置一個(gè)鈴聲,于是趕緊把期望的alarm鈴聲傳進(jìn)去。發(fā)現(xiàn)notification彈出時(shí)確實(shí)是播放的預(yù)期的鈴聲,可是到了notification channel 的設(shè)置界面一看,由于傳入的鈴聲不在它選擇鈴聲的范圍內(nèi),所以界面上會顯示勾選的是它的默認(rèn)通知鈴聲,這是一個(gè)bug,還有,一旦你在這個(gè)設(shè)置里修改了鈴聲,你再也沒法用回之前期望的alarm鈴聲了,無論是在代碼里update channel 也好,刪除channel再重新創(chuàng)建也好,都沒法修改鈴聲了(參考官方文檔,居然就是這么設(shè)計(jì)的?。菓?yīng)用卸載重裝或者清除數(shù)據(jù),真是坑爹!

所以凡是使用notification并且有自定義notification鈴聲的應(yīng)用,到了android O上都會有這樣的問題。

Google的本意其實(shí)挺好,應(yīng)用自己不需要在維護(hù)通知鈴聲相關(guān)的設(shè)置,統(tǒng)一放在系統(tǒng)設(shè)置由用戶去選,而且既然是notification,就應(yīng)該用notification類型的鈴聲,原本就是android的設(shè)計(jì)規(guī)范。就是苦了國內(nèi)無數(shù)自定義鈴聲的app了。

目前看來解決辦法只有 1.改需求 2.應(yīng)用自己用mediaplayer播放鈴聲,然而這又是一個(gè)巨深的坑,鈴聲得跟著notification的生命周期走,還有無數(shù)特殊情況需要考慮(來電,靜音,錄音中等等等等,曾經(jīng)趟過,慘不忍睹)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容