最近利用環(huán)信的SDK在開(kāi)發(fā)一個(gè)具備im功能的工具APP,在討論“消息提醒設(shè)置”這個(gè)功能時(shí),被攻城獅教育了一番,順帶漲了姿勢(shì),所以過(guò)來(lái)記錄一下,能夠加深理解。
首先為什么要做“消息提醒設(shè)置”這個(gè)功能?因?yàn)樵谌粘J謾C(jī)使用過(guò)程中,默認(rèn)都是打開(kāi)聲音和振動(dòng)的,所以在不同場(chǎng)合下會(huì)被系統(tǒng)推送的消息聲音或者振動(dòng)干擾到,特別是在一些會(huì)議會(huì)晤,面試等,這些噪音或者干擾來(lái)源于例如微信,QQ,郵件等,這個(gè)時(shí)候就需要能夠?qū)κ謾C(jī)進(jìn)行靜音或者取消振動(dòng)的設(shè)置。以微信為例,有三種場(chǎng)景比較常見(jiàn):
1,嘈雜或者非正式環(huán)境中(比如公交車上),用戶接受微信消息時(shí),需要聲音提醒、振動(dòng)提醒或者聲音振動(dòng)三種模式提醒用戶有新消息需要處理。簡(jiǎn)單的說(shuō)我需要他提醒。
2,安靜或者正式環(huán)境中(比如辦公室),用戶接受微信消息時(shí),需要支持靜音,免振動(dòng)或者靜音免振動(dòng)三種模式來(lái)隔離干擾信息。相對(duì)應(yīng)的就是我需要他適當(dāng)閉嘴。
3,在工作期間或者晚上睡覺(jué)期間,用戶不希望被消息打擾甚至希望阻止接收消息。用戶希望有選擇性的讓他在某些時(shí)間段內(nèi)閉嘴。
上述三種場(chǎng)景也說(shuō)明了消息提醒的作用:一方面確實(shí)給了用戶主動(dòng)權(quán),能夠方便用戶隔離干擾信息;當(dāng)然從消息提醒本身來(lái)說(shuō)在更多的場(chǎng)景下能夠提高效率和便捷。
還是以微信為例,如何滿足上述三種場(chǎng)景(以iOS端為例):
首先功能點(diǎn)自上而下以此為:接受新消息通知設(shè)置,通知顯示消息詳情設(shè)置,功能消息免打擾設(shè)置,聲音振動(dòng)設(shè)置和朋友圈照片更新設(shè)置。權(quán)限也是自上而下傳遞的。
首先是接收新消息通知,因?yàn)閕OS系統(tǒng)的限制性,iphone把消息提醒的權(quán)限做了管理(在Android下完全可以自己控制),只有在iPhone下設(shè)置開(kāi)通通知權(quán)限才行,如果關(guān)閉后,在微信關(guān)閉期間將不能接受到消息推送,只有打開(kāi)微信才能收到消息。
消息顯示詳情略過(guò),功能消息免打擾,可以根據(jù)自己的需求決定是否再特定的時(shí)間段關(guān)閉消息推送,目前微信免打擾支持“QQ郵件”免打擾消息,設(shè)置成“只在夜間開(kāi)啟”,則微信關(guān)閉期間就接受不到QQ郵件提醒了。
關(guān)于消息和振動(dòng),這個(gè)是在微信運(yùn)行期間(就是你在微信APP內(nèi))的生效,一旦退回到桌面或者對(duì)手機(jī)鎖屏,則不會(huì)產(chǎn)生作用。說(shuō)到這里,需要明白一個(gè)消息推送和消息提醒的區(qū)別,推送是針對(duì)微信關(guān)閉而言的;消息提醒是針對(duì)微信運(yùn)行而言的,他們的內(nèi)部實(shí)現(xiàn)機(jī)制有所不同,舉個(gè)例子,推送是一個(gè)被動(dòng)的過(guò)程,由服務(wù)器監(jiān)聽(tīng)別人發(fā)給你的消息,找到發(fā)給你的消息然后推送你;而提醒是一個(gè)主動(dòng)的過(guò)程,你實(shí)時(shí)去服務(wù)器拿消息。
好啦,消息提醒設(shè)置大致就是這樣子。