Android我还可以相信你多少系列文章三之通知栏

说起通知栏,是一块各个应用的必争之地,不显示通知栏就意味着没有存在感,通知栏显示得不靠前还得想方设法提前。加上OnGoing的通知还能提升进程优先级,大有被滥用的趋势。为了保活,虽然没啥必要也得起个通知。甚至还有一些不显示通知的前台Service黑科技广为流传,可以参考这里。厂家和开发者的战斗越演欲烈,到现在即使OnGoing的Service放后台也照杀不误,真是可怜了我们这群做音乐的。于是后台应用保护白名单,下拉锁定,手机管家,省电模式,神隐模式等等用于限制后台运行的功能越来越多,可想应用怎么斗得过系统?

还好Android上面有一键清除所有通知,否则现在一个App要出N个通知的情况要吐血。每一条新闻要出个通知,一天要通知好多次。自己保活不了不算,还要别人拉起来帮忙通知(后台startService起另外一个程序的用法也被比如华为系统限制)。我们在抱怨后台越来越被限制的同时,也要思考自己软件是否做到了尽量少骚扰用户。

通知栏的开发每个人心中都会有些伤痛。主要有以下几点:

通知栏没有显示

通知栏不更新

点击没反应

通知栏上面内容看不清

通知栏的样式长得跟其他不一样,自己的独树一帜很突兀

事实上从Android的历史版本来看,通知栏这个设计也是被改过了非常多次,不仅仅是样式,还有各种功能改动,包括最新的O版本。为了保证更好的兼容性,我们建议:

1.遵循通知的设计的初衷

Communication from other users

Well-timed and informative task reminders

如官方所描述,通知用于和他人交流或者是有用任务提醒。所以在考虑是否使用通知的时候思考你的通知是否属于上述两类。是否用户一天到晚都需要关心你的通知,你的通知对于用户价值是咋样的。你的所有东西都往上面丢也意味着别人可能也这么做,两败俱伤。

2. 通知栏不显示

高版本的原生系统自带通知栏显示管理功能,默认是允许显示。但像oppo系统却默认不允许显示。 和厂家沟通是为了减少对用户的影响。这种粗暴的管理方式甚至连音乐App也无法幸免。国内默认白名单的估计也就是QQ和微信了。对于这种特权App待遇处理又无奈又愤怒。我们能做的只能是检测手机然后做引导提醒。

3.通知栏不更新

同样发现在oppo,vivo手机上面,可能是出于性能考虑限制了更新频率,通知发送太快可能会被忽略,这样偶尔会导致通知栏不更新。这种情况可能在音乐App上容易出现,更新信息同时需要更新图片。我们能做的就是故意做点延迟,目前经验值是200ms。

4.点击没反应

除了代码bug,厂家这边的问题有发现在华为部分系统上面,因为对通知栏进行了修改增加了第一次显示通知时同时显示是否允许按钮,怀疑这个修改导致了bug,用户即使点了允许显示了通知,也无法对通知上面的按钮进行操作,直到下一次通知刷新才正常。

5.通知上面的内容看不清,通知样式长得跟其他通知不一样

这个问题是因为使用了RemoteView来实现自定义通知。原生系统其实提供了很多style,但往往需求的实现是复杂的。不可避免的在使用自定义通知的时候我们可能有几种方法尽量增加兼容性:

5.1

不要使用自定义背景,显示了指定一个颜色意味着你就很特殊,很大几率跟别人长得不一样。而且即使是给RemoteView设置background,据我们经验仍然在有些机器上面不起作用,很可能厂家考虑到了这个问题直接忽略掉了背景。当然指定背景也能解决一部分文字看不清问题,但这个方案不怎么推荐

5.2 通过起一个通知来获取文字颜色,原生系统提供了三行文字,对于文字样式不多的情况可以尝试这种方法,但据我们之前尝试也还是存在获取颜色失败等兼容问题,相关代码类似这样,来源这里

5.3  读取系统通知的style来设置文字样式,style高低版本上面有所区别:

Title字体@android:style/TextAppearance.StatusBar.EventContent.Title

Content字体@android:style/TextAppearance.StatusBar.EventContent

Title字体@android:style/TextAppearance.Material.Notification.Title

Content字体@android:style/TextAppearance.Material.Notification.Line2

云音乐目前采用的就是这个方案,但也会有坑,直到某一天厂家来反馈说我们修改了系统通知栏底色,但忘记修改上面提到的style了。。。最终云音乐使用了这个方案结合修改通知栏底色,不过修改底色是放在设置里面作为一个用户选项。

5.4 没什么特殊情况,请尽量使用系统通知Style。这种兼容性肯定是最好的,事实上随着Android这些版本的升级,加入了越来越多的模板能够满足了绝大部分的需求。如果你还是遇到需要自定义的情况,要么是开发没想到可以用系统模板,要么就是视觉交互不满意原生样式。是时候拿出上面这些理由了。

接下来我想聊一聊通知栏的跳转设计。

通知的点击代码很简单,调用setOnClickPendingIntent设置下就可以了。但往往业务逻辑没有那么简单,有些页面打开是需要登录的,程序还没任何页面启动话需要看一次广告等必须要解决前置一些条件。或者程序运行中task里面的root activity必须是我们的首页。这种情况其实比较常见,因为我们很不想加的退出应用功能最好的方式就是通过Intent的FLAG_ACTIVITY_CLEAR_TOP来实现的。清理掉root activty上面的所有activity之后再finish自己。这种实现就要求root activity比较固定。

所以最好设计一个跳转协议,如果页面还未启动则走正常启动流程,页面已经启动了则直接打开目标页面,大概代码可能是这样,这是RedirectActivity里onCreate的代码:

以上经验来自我的团队,感谢我的团队。如果有遇到问题可以留言和我们讨论。

如果感兴趣,请关注微信公众号:anzhuozhimei

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,050评论 25 707
  • 太长了,还是转载吧...今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源...
    庞哈哈哈12138阅读 20,100评论 3 283
  • 人生五味,样样齐全。你出身自己无法决定,你离开自己依然无法决定,你可以决定怎样活着。要是你依然无法决定你怎么活着,...
    因痴浪迹阅读 125评论 0 1
  • 乌云遍天, 车轮滚得飞快。 窗外, 绿影忽闪而过。 打在我热热的心脏里。 309公里的思念, 重重抛起, 轻轻落下...
    小二翻身做掌柜阅读 354评论 0 0