最近利用环信的SDK在开发一个具备im功能的工具APP,在讨论“消息提醒设置”这个功能时,被攻城狮教育了一番,顺带涨了姿势,所以过来记录一下,能够加深理解。
首先为什么要做“消息提醒设置”这个功能?因为在日常手机使用过程中,默认都是打开声音和振动的,所以在不同场合下会被系统推送的消息声音或者振动干扰到,特别是在一些会议会晤,面试等,这些噪音或者干扰来源于例如微信,QQ,邮件等,这个时候就需要能够对手机进行静音或者取消振动的设置。以微信为例,有三种场景比较常见:
1,嘈杂或者非正式环境中(比如公交车上),用户接受微信消息时,需要声音提醒、振动提醒或者声音振动三种模式提醒用户有新消息需要处理。简单的说我需要他提醒。
2,安静或者正式环境中(比如办公室),用户接受微信消息时,需要支持静音,免振动或者静音免振动三种模式来隔离干扰信息。相对应的就是我需要他适当闭嘴。
3,在工作期间或者晚上睡觉期间,用户不希望被消息打扰甚至希望阻止接收消息。用户希望有选择性的让他在某些时间段内闭嘴。
上述三种场景也说明了消息提醒的作用:一方面确实给了用户主动权,能够方便用户隔离干扰信息;当然从消息提醒本身来说在更多的场景下能够提高效率和便捷。
还是以微信为例,如何满足上述三种场景(以iOS端为例):
首先功能点自上而下以此为:接受新消息通知设置,通知显示消息详情设置,功能消息免打扰设置,声音振动设置和朋友圈照片更新设置。权限也是自上而下传递的。
首先是接收新消息通知,因为iOS系统的限制性,iphone把消息提醒的权限做了管理(在Android下完全可以自己控制),只有在iPhone下设置开通通知权限才行,如果关闭后,在微信关闭期间将不能接受到消息推送,只有打开微信才能收到消息。
消息显示详情略过,功能消息免打扰,可以根据自己的需求决定是否再特定的时间段关闭消息推送,目前微信免打扰支持“QQ邮件”免打扰消息,设置成“只在夜间开启”,则微信关闭期间就接受不到QQ邮件提醒了。
关于消息和振动,这个是在微信运行期间(就是你在微信APP内)的生效,一旦退回到桌面或者对手机锁屏,则不会产生作用。说到这里,需要明白一个消息推送和消息提醒的区别,推送是针对微信关闭而言的;消息提醒是针对微信运行而言的,他们的内部实现机制有所不同,举个例子,推送是一个被动的过程,由服务器监听别人发给你的消息,找到发给你的消息然后推送你;而提醒是一个主动的过程,你实时去服务器拿消息。
好啦,消息提醒设置大致就是这样子。