如何实现推送提醒的红点或数字角标展示?

郑天寿
• 阅读 244

融云不维护应用角标数量,融云 SDK 不支持控制角标展示。本文仅描述与厂商推送通知相关的角标控制实现。

很多开发者都希望可以在应用桌面开启角标或者小红点,以达到更好的提醒效果。推送厂商对此功能的开放程度不一,详见下表:

推送厂商 是否支持角标/红点 是否需要配置 适配说明 华为 支持角标 是 请参考下文华为推送角标适配说明 。 华为 支持角标 是 请参考下文荣耀推送角标适配说明 。 小米 支持角标 否 遵从系统默认逻辑。小米 MIUI 6 及以上设备支持数字角标,由小米系统自动处理数字角标展示功能。感应通知栏通知数目,按 1 自动增减,打开 App 清零。 OPPO 支持红点 否 圆点展示需由用户在通知设置中手动开启,遵从系统默认逻辑,有通知则展示,无则不展示;数值展示只对指定应用开启,例如 QQ、微信,需向官方进行权限申请,暂无明确适配说明。 vivo 不支持 - 融云仅支持 vivo 的通知栏消息,但 vivo 的通知栏消息并不支持角标显示。 魅族 支持红点 否 遵从系统默认逻辑,仅支持红点展示,有通知则展示,无则不展示 iOS 支持角标 否 客户端发送消息不支持控制角标。通过服务端 API 发送单聊消息,或直接发送远程推送时支持设置角标数字。 华为推送角标适配说明 使用限制 华为手机角标展示支持 EMUI 8.0 及以上手机。 受限于华为手机角标能力的开放程度,在不同的推送场景下角标功能有所不同,详见下表。

推送形式 华为的角标能力 融云支持能力及实现方式 通知栏消息 支持角标自动加 1、直接设置或不变,支持通知点击的自动减 1,不支持通知清除的自动减 1 支持配置推送触发角标自动加 1 或不变,不支持直接设置。您可以在开发者后台配置 badgeAddNum(对应华为的 add_num 2),暂不支持华为的 set_num。 透传消息(融云已下线该能力) 开发者自行处理设置、加减逻辑。 融云不支持透传方式的华为推送(该能力已下线,部分老客户可自行调用 HMS SDK 开放接口。) 配置说明 开发者后台设置 打开融云开发者后台 2,在应用标识 4页面点击设置推送 ,找到 Android > 华为推送 ,点击编辑配置应用入口 Activity 类。注意必须是应用入口 Activity 类,否则无法显示角标。

如果设置 badgeAddNum(角标数字累加值),可在原角标的基础上进行累加。例如,badgeAddNum 取值为 1,原角标数为 2,发送消息后,应用角标数显示为 3。

如何实现推送提醒的红点或数字角标展示? 应用内角标设置权限申请 为能实现角标修改的正确效果,请首先为应用添加华为手机上的角标读写权限,具体实现为在应用 AndroidManifest.xml 文件的 manifest 标签下添加以下权限配置:

华为手机终端设置角标自增减 华为手机支持角标自动增减 1(负数为减,正数为增),需要在客户端通过代码实现,示例如下:

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); 清除角标 打开应用或者点击、清理通知栏消息并不会清理角标数字或圆点,需开发者自行设置清理角标,详情请参见桌面角标开发指导 14。

荣耀推送角标适配说明 配置说明 开发者后台设置 打开融云开发者后台 2,在应用标识 4页面点击设置推送 ,找到 Android > 荣耀推送 ,点击编辑配置应用入口 Activity 类。注意必须是应用入口 Activity 类,否则无法显示角标。

如果设置 badgeAddNum(角标数字累加值),可在原角标的基础上进行累加。例如,badgeAddNum 取值为 1,原角标数为 2,发送消息后,应用角标数显示为 3。

如何实现推送提醒的红点或数字角标展示? 清除角标 打开应用或者点击、清理通知栏消息并不会清理角标数字或圆点,需开发者自行设置清理角标。

boolean mIsSupportedBadge = true; public void setBadgeNum(int num) { try { Bundle bundle = new Bundle(); bundle.putString("package", "cn.rongcloud.im"); // com.test.badge is your package name bundle.putString("class", "cn.rongcloud.im.ui.activity.SplashActivity"); // com.test. badge.MainActivity is your apk main activity bundle.putInt("badgenumber", num); this.getContentResolver().call(Uri.parse("content://com.hihonor.android.launcher.settings/badge/"), "change_badge", null, bundle); } catch (Exception e) { mIsSupportedBadge = false; } }

int num = 0; //Application public void onCreate() { if (mIsSupportedBadge) { setBadgeNum(num); } } iOS 角标 开发者后台配置 融云支持从开发者后台配置 iOS 不显示角标数。前往 融云开发者后台,点击 应用标识 并找到当前需要集成的项目,然后点击 设置推送 。如果未创建可点击 添加 。

如何实现推送提醒的红点或数字角标展示? 服务端 API 使用服务端 API 发送单聊消息 5时,可设置 count 参数。

使用 /push.json 接口时,需要在 notification.ios.badge 字段下设置角标值。

发送全量用户不落地通知 4 发送标签用户通知 1 发送应用包名通知 1 发送指定用户不落地通知 2 清除角标 点击通知时,客户端需要调用原生接口 setApplicationIconBadgeNumber 清除本地角标显示值。

  • (void)applicationWillEnterForeground:(UIApplication *)application { [application setApplicationIconBadgeNumber:0]; [application cancelAllLocalNotifications]; }
点赞
收藏
评论区
推荐文章
Easter79 Easter79
2年前
typeScript数据类型
//布尔类型letisDone:booleanfalse;//数字类型所有数字都是浮点数numberletdecLiteral:number6;lethexLiteral:number0xf00d;letbinaryLiteral:number0b101
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
IOS推送消息怎么实现icon图标的数字累加
IOS推送消息怎么实现icon图标的数字累加(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cnblogs.com%2Fqiqibo%2Farchive%2F2012%2F08%2F26%2F2657379.html)
Stella981 Stella981
2年前
Android Icon数字角标Badge的实现方式
Android系统小米,三星,索尼手机发送桌面快键提醒数字图标,在Android系统中,众所周知不支持BadgeNumber,虽然第三方控件BadgeView可以实现应用内的数字提醒,但对于系统的图标,特别是app的logo图标很难实现数字标志,即使是绘图的方式不断修改,但这种方式天生弊端,实用性很差。但幸运的是,某些ROM厂商提供了私有的API,但也带来
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
2年前
JVM 字节码指令表
字节码助记符指令含义0x00nop什么都不做0x01aconst\_null将null推送至栈顶0x02iconst\_m1将int型1推送至栈顶0x03iconst\_0将int型0推送至栈顶0x04iconst\_1将int型1推送至栈顶0x05ic
Stella981 Stella981
2年前
Android UI:机智的远程动态更新策略
腾讯Bugly特约作者:王金波问题描述做过Android开发的人都遇到过这样的问题:随着需求的变化,某些入口界面通常会出现UI的增加、减少、内容变化、以及跳转界面发生变化等问题。每次发生变化都要手动修改代码,而入口界面通常具有未读信息提醒这样的“小红点”逻辑;一旦UI变化,“小红点”逻辑也要重新计算。如果不同的RD来维护
Stella981 Stella981
2年前
Easypush微信消息推送——打破传统的消息推送方式
通过使用EasyPush实现信息推送官网:https://easypush.baigekeji.com/Easypush从1.1.0(发行版)开始,进行行业模块分析,致力于高效下服务消息推送,将原先常见的推送开发模式统一封装,实现多种推送方式,目前仍在不断研发,在提服务提醒领域更加智能化(不定时更新)
E小媛同学 E小媛同学
5个月前
智能物流时代:快递物流信息订阅与推送API自动推送物流变更信息
在当今数字化和智能化的时代,物流行业也在迅速演变,通过技术创新提高效率、提升服务质量。其中,快递物流信息订阅与推送API的自动推送功能成为推动物流领域发展的重要驱动力。本文将深入探讨这一趋势,并分析快递物流信息订阅与推送API如何在智能物流时代实现自动推送物流变更信息,为物流行业注入更多智能元素。
马尚 马尚
3星期前
使用OpenCV和Tesseract识别英文数字验证码
在这个项目中,我们将展示如何使用OpenCV和Tesseract来识别英文数字验证码。验证码是一种常见的安全措施,用于防止机器人或恶意软件的访问。英文数字验证码通常包含了随机生成的字母和数字,我们将利用OpenCV进行图像处理,并使用Tesseract来进