Android Badge 角标 总结
- 众所周知,App桌面角标,原来仅在iOS上面有,安卓原生是不支持的,如果需要为App添加角标,需要使用到各大厂商自己的实现
- 大多数的厂商都是通过广播形式实现App角标,即App内部通过发送广播,更新桌面角标。
- 发送广播需要初始化Intent,然后往里面put参数,但各个厂商的put的参数不一定一样,这就需要开发者在根据各个厂商做适配。
- 但万能的Google帮我搜索到了第三方库BadgeUtil,方便角标操作。原理很简单,匹配当前Launcher名称,找到相对应的Badge实现类,不同的Badge实现会适配各自厂商的Launcher。
- 这库很方便,省了不少查文档的时间。
Badge与推送
角标有一个较常用的场景,就是在接收到推送时,在原有数字上+1
- 这里只需要App维护着一个当前Badge的数字,因为这个数字通过广播发送给系统后,但不能从系统获取,所以要做+1操作,必须自己维护着当前数值,收到推送后,手动发送广播,设置当前数值。
-
上面的一点,发现了某种情况下,在小米手机上不适用
1) 首先是小米手机如果要更新角标,就必须在通知栏发送一个通知。
2) App不处于最前端的情况下,才能更新角标(例如:当前处于App的其中一个Activity在显示状态,不能更新角标的)
3) 若是用极光推送(我只用过极光), 而且使用发送通知
这个时候极光会自动在通知发送一个通知,如果App不在最前面,角标会自动+1,这就是
这时候就是等于小米可以跟极光已经配合做好角标了,不需要我们做什么,如果这时候我们再手动更新角标,则用户会收到两条通知,所以在发送之前需要判断一下是否小米手机。- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
总结一下:
就是小米手机需要在更新角标前做一些特别判断,其它的就直接用第三方库更新就可以了。