App上看到就忍不住点的小红点是如何实现的?
你有没有发现,我们解锁手机后桌面上App右上角总能看到一个小红点,这就是推送角标。推送角标指的是移动设备上App图标右上角的红色圆圈,圆圈内的白色数字表示未读消息数量。角标是一种比较轻的提醒方式,通过直观的展现用户尚未阅读的信息数量,可以给用户营造一种紧张感,激起用户阅读的好奇心,从而让用户忍不住点开。因此在使用得当的情况下,推送角标有助于提高App推送打开率,保持用户粘性。

HMS Core推送服务提供了设置桌面角标的API接口,开发者可以在消息中封装角标参数。那这个“小红点”功能是如何实现的呢?以下是详细的集成步骤。
一.客户端API设置华为推送角标
支持平台:
1.系统版本:EMUI4.1 及以上
2.桌面版本:6.3.29
3.支持设备:华为设备
角标功能开发:
- 声明权限
	< uses - permission android: name = "android.permission.INTERNET" / >
	    <
	    uses - permission android: name =
"com.huawei.android.launcher.permission.CHANGE_BADGE " / >
- 在需要进行角标显示地方,采用如下方法传递数据给华为桌面应用。
	Bundle extra = new Bundle();
	extra.putString("package", "xxxxxx");
	extra.putString("class", "yyyyyyy");
	extra.putInt("badgenumber", i);
	context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher
	.settings/badge/"), "change_badge", null, extra);
关键参数说明:
package:应用包名
class:桌面图标对应的应用入口Activity类
badgenumber:角标数字
	boolean mIsSupportedBade = true;
	if (mIsSupportedBade) {
	    setBadgeNum(num);
	}
	/** set badge number*/
	public void setBadgeNum(int num) {
	    try {
	        Bundle bunlde = new Bundle();
	        // com.test.badge is your package name
	        bunlde.putString("package", "com.test.badge");
        // com.test. badge.MainActivity is your apk main activity
        bunlde.putString("class", "com.test. badge.MainActivity");
        bunlde.putInt("badgenumber", num);
        this.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde);
    } catch (Exception e) {
        mIsSupportedBade = false;
    }
}
特殊情形考虑:
(1)对于第三应用打开和退出时,是否还继续显示角标取决于应用传递的值(badgenumber为0时,不显示角标;badgenumber大于0时,显示角标)。
(2)当第三方应用package和class发生变化时,需传递该变化后的信息。
(3)在调用角标接口前不一定要事先获取桌面是否支持角标功能此功能。当桌面不支持角标功能时,接口会抛出异常,应用可以在调用接口的地方加上try … catch(Exception e) 语句以免程序崩溃。
二.HMS Core推送服务sdk桌面角标设置
Push Kit发送下行消息接口中由BadgeNotification的三个参数决定了角标是否显示以及显示的数量:

在设置时需要注意以下5点:
1.class字段应用包名+应用入口Activity类名,如果传错角标则无法展示
2.add_num字段要求emui版本8.0.0以上,推送服务版本8.0.0
3.set_num字段要求emui版本10.0.0以上,推送服务版本10.1.0
4.打开应用或者点击、清理通知栏消息并不会清理角标数,需应用在端侧参考角标开发指导去清理角标。
- “class“必填,“add_num”和”set_num”参数选填。
若“add_num”和“set_num”都设置为空,则应用角标数字默认加1
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
App上看到就忍不住点的小红点是如何实现的?的更多相关文章
- app上传到App Store的快捷方法及步骤
		跳过证书的申请及配置概要文件的设置, 现在根据已有的配置概要文件及发布证书开始: 1.先在Xcode上的PROJECT和TARGETS->Build Setting->Code Signi ... 
- iOS app上传错误集锦(转载)
		1.工程里增加了版本自动更新. 2.未增加判断网络状态的类Reachability. 3.问题:error itms -90049 This bundel is invalid. The bundle ... 
- 关于app上页面和js的调试
		不久前折腾了一晚上关于app上的页面和js的调试: 首先得准备几个比较比较常用的工具: 1.chrome(这个都没有你还干啥fe呀) 2.Fiddler(抓包神器,基本也是必备咯) 3.sublime ... 
- 实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
		转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24022165 今天给大家带来CSDN的完结篇,即增加文章的查看和文章中图片的保存 ... 
- jQuery模拟原生态App上拉刷新下拉加载
		jQuery模拟原生态App上拉刷新下拉加载效果代码,鼠标上拉时会显示loading字样,并且会模拟加载一条静态数据,支持触屏设备使用. <!doctype html> <html ... 
- 实现app上对csdn的文章列表上拉刷新下拉加载以及加入缓存文章列表的功能 (制作csdn app 四)
		转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23698511 今天继续对我们的csdn客户端未完成的功能进行实现,本篇博客接着客 ... 
- ios - 如何获取app上的数据
		做过ios开发的人应该都用过Charles,通常叫它花瓶.Charles是Mac下常用的对网络流量进行分析的工具,类似于Windows下的Fiddler.在开发iOS程序的时候,往往需要调试客户端和服 ... 
- Ios App上传步骤
		前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发者中心:https://developer.apple.com 打开后点击 ... 
- IOS APP 上传到AppStore
		由于第一次接触要把 app 上传到 AppStore 比较棘手,很多地方不懂,研究了 大半天 终于给上传成功了,现在坐等审核吧,首先把上传到AppStore的流程 整理下 : 第一 :准备证书 (要确 ... 
随机推荐
- CentOS的安装以及IP地址(动态/静态)的配置
			啊!复试压力好大,跟好多学长聊完以后觉得自己更该好好努力了,一边好好准备复试科目,一边把之前忘掉的捡起来吧,加油! 1.安装的具体过程请参照这位博主写的,我觉得写的很详细,https://blog.c ... 
- webpack的安装 以及 问题  以及 作用
			参考链接: https://blog.csdn.net/Rnger/article/details/81086938 https://blog.csdn.net/qq_38111015/art ... 
- js 生成 pdf 文件
			话不多说好吧, 直接上demo图: 直接上代码好吧:(要引入的两个js 链接我放最后) <!DOCTYPE html> <html> <head> <met ... 
- Static in C++
			Static in C++ static根据上下文会有两种含义,他们的区别如下 **在类class或者是在结构体struct 外 **使用static 类外的static修饰的符号在link阶段是局部 ... 
- Blazor 国际化多语言界面 (I18nText )
			在实际使用中,我们经常会遇到需要把程序界面多种语言切换,适应不同地区使用者的需求,本文介绍一个我初学Blazor接触到的库,边撸边讲解. 包名: Toolbelt.Blazor.I18nText ht ... 
- java数组算法——数组元素的赋值2
			java数组算法--数组元素的赋值2--java经典面试题:创建一个长度为6的int型数组,要求数组元素的值都在1-30之间,且是随机赋值.同时要求元素时的值各不相同 
- Flutter 打印日志封装及创建Live Templates快捷打印日志
			只需要输入logi 就可出现以下代码 /// tag(类名.函数名)LogUtil.i(index, tag: '_MyHomePageState.onItemClick:');打印日志效果如下: 实 ... 
- 7-19(排序) 寻找大富翁 (25 分)(归并排序)(C语言实现)
			7-19(排序) 寻找大富翁 (25 分) 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁. 输入格式 ... 
- 基于docker搭建laravel项目
			基于docker搭建laravel项目 公司PHP项目是Laravel框架写的,目前环境需要通过docker来部署一下.网上学习了一下相关知识.整理后做一个笔记.用到定时任务crontab与进程管理s ... 
- 2021.07.02 UVa1197 多路归并模板
			2021.07.02 UVa1197 多路归并模板 UVA11997 K Smallest Sums - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 分析: 题解 UVA11997 ... 
