iOS推送自定義聲音,震動(dòng),呼吸燈

最近在做iOS推送時(shí),想對(duì)推送時(shí)的聲音,震動(dòng),呼吸燈進(jìn)行控制。查了一下官方文檔,問(wèn)了一些做IM的朋友,聲音和震動(dòng)實(shí)現(xiàn)起來(lái)都不難,呼吸燈(iOS并沒(méi)有像安卓那樣的呼吸燈,只能用LED閃爍來(lái)代替)。

iOS支持的音頻格式主要是aiff,wav,caf,具體文件需要放在mainBundle目錄中。音頻長(zhǎng)度必須要在30秒以內(nèi),不然會(huì)被系統(tǒng)聲音所取代。


首先我使用本地推送來(lái)做一個(gè)鬧鐘功能,具體代碼:



在真機(jī)的聲音鍵打開(kāi)的情況下,_notification.soundName的值我隨便設(shè)一個(gè)值,收到推送時(shí)的聲音是系統(tǒng)自帶的聲音。_notification.soundName的值設(shè)為項(xiàng)目中所加的某一個(gè)音頻文件是播放的是自定義的聲音。在此種情況下,收到推送時(shí)都有聲音和震動(dòng)。在關(guān)閉了聲音鍵后,此時(shí)收到推送是沒(méi)聲音有震動(dòng)的。

我再次把_notification.soundName設(shè)為了nil,收到推送時(shí)是既沒(méi)有聲音也沒(méi)有震動(dòng)的。

但還有一種情況是需要考慮的,在音量鍵打開(kāi)的情況下,怎么樣才能實(shí)現(xiàn)沒(méi)有聲音但卻有震動(dòng)呢?我想到的辦法是項(xiàng)目中加入一個(gè)沒(méi)有聲音的音頻文件,把_notification.soundName設(shè)為這個(gè)音頻的名字,那么在收到推送時(shí)就是有震動(dòng)但沒(méi)聲音了??偨Y(jié)如下:


聲音鍵開(kāi)啟時(shí)

1、想要既有聲音和震動(dòng),_notification.soundName需要設(shè)為非空值。

2、想要自定義聲音,_notification.soundName需要設(shè)為工程中某個(gè)文件的名字(帶后綴)。

3、想要既沒(méi)聲音也沒(méi)震動(dòng),_notification.soundName=nil;

4、想要有震動(dòng)沒(méi)聲音,_notification.soundName需要設(shè)為工程中某個(gè)沒(méi)有聲音的音頻文件。

聲音鍵關(guān)閉時(shí)

1、想要震動(dòng),_notification.soundName需要設(shè)為非空值。

2、想無(wú)震動(dòng),_notification.soundName=nil;


在本地推送檢測(cè)無(wú)誤的情況,我又用極光測(cè)試了遠(yuǎn)程推送的情況。



收到的內(nèi)容是這樣的


成功的播出了自己的聲音,perfect。


至于LED燈閃爍的問(wèn)題,因?yàn)镹otification里面沒(méi)有LED相關(guān)的屬性,并不能控制LED燈閃爍。在用戶打開(kāi)LED燈閃爍之后,只要收到推送就會(huì)閃爍。我個(gè)人覺(jué)得開(kāi)發(fā)者最多能做到的是,在用戶運(yùn)行APP過(guò)程中收到推送,可以通過(guò)代碼來(lái)控制LED燈閃爍。


PS:筆者在QQ,微信的安裝包中都找到了一個(gè)沒(méi)有聲音的音頻文件,個(gè)人推測(cè)騰訊的推送在iPhone聲音鍵開(kāi)啟的情況下,想要只有震動(dòng)沒(méi)有聲音的效果,應(yīng)該也是播放一個(gè)沒(méi)有聲音的音頻文件。


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

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

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