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

融云不维护应用角标数量,融云 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。

image

image1322×863 67.5 KB

应用内角标设置权限申请

为能实现角标修改的正确效果,请首先为应用添加华为手机上的角标读写权限,具体实现为在应用 AndroidManifest.xml 文件的 manifest 标签下添加以下权限配置:

 

<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>

华为手机终端设置角标自增减

华为手机支持角标自动增减 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。

image

image1319×863 67.1 KB

清除角标

打开应用或者点击、清理通知栏消息并不会清理角标数字或圆点,需开发者自行设置清理角标。

 

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 不显示角标数。前往 融云开发者后台,点击 应用标识 并找到当前需要集成的项目,然后点击 设置推送 。如果未创建可点击 添加 。

image

image2280×1397 172 KB

服务端 API

清除角标

点击通知时,客户端需要调用原生接口 setApplicationIconBadgeNumber 清除本地角标显示值。

 

- (void)applicationWillEnterForeground:(UIApplication *)application { [application setApplicationIconBadgeNumber:0]; [application cancelAllLocalNotifications]; }

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值