角标设置

角标设置

一、需求背景

1.1 背景描述

应用badge角标,是手机桌面应用图标右上角圆点或者数字角标,常见的场景是伴随通知栏消息显示,提醒用户及时点阅新消息。iOS手机系统能够较好的支持角标,Android手机系统由于碎片化严重,品牌众多,版本各异,所以角标功能适配较难。个推后续会在Android角标功能适配继续努力,为开发者提供较好的角标功能体验。

1.2 各手机品牌角标支持情况

机型 是否支持角标/红点显示 适配说明
华为 支持角标 参考当前文档
荣耀 支持角标 参考当前文档
小米 支持角标 遵从系统默认逻辑,感应通知栏通知数目,按 1 自动增减
OPPO 支持红点 圆点展示需由用户在通知设置中手动开启,遵从系统默认逻辑,有通知则展示,无则不展示;
数值展示只对指定应用开启,例如 QQ、微信,需向官方进行权限申请,暂无明确适配说明
VIVO 支持角标 高版本系统自带离线通知数字角标展示功能,默认+1处理,打开清零,低版本没有角标功能。
魅族 支持红点 遵从系统默认逻辑,仅支持红点展示,有通知则展示,无则不展示
iOS 支持角标 参考当前文档

二、功能实现

角标功能适用于 通知消息

2.1 iOS (APNs)

iOS 系统需要客户端和服务端配合实现角标功能

服务端

"push_channel":{
    "ios":{
        "type":"notify",
        "payload":"自定义消息",
        "aps":{
            "alert":{
                "title":"通知标题",
                "body":"通知内容"
            },
            "content-available":0
        },
        //离线走apns推送时,设置的iOS角标。
        "auto_badge":"+1" //可以实现显示数字的自动增减,如“+1”、 “-1”、 “1” 等,计算结果将覆盖badge
    }
}

客户端

客户端打开 app 可更改角标数或清空角标(设置角标数为 0):客户端设置iOS角标

示例:

设置角标减 1
1、在点击后的方法中,调用 application.applicationIconBadgeNumber 获取到角标数减 1
2、通过 [application setApplicationIconBadgeNumber:]设置当前的角标
3、然后通过个推的 [GeTuiSdk setBadge:] 将角标同步给个推服务器

常见问题

Q:iOS应用如何让角标badge自动加1?

A:

  • 这个需要客户端与服务端进行协助处理,但只适合用对单个用户进行推送,群推和批量推送都不适合。目前java和restAPI支持自动累加,autobadge(+1)。
  • 客户端读取未读数量并汇报给服务端,当未读数量更新时也要汇报给服务端。
  • 服务端接收到未读数量后对应用户ID保存起来,当服务端进行推送消息时先去查询未读数量,然后再根据未读数量进行加1后调用API接口进行推送。

2.2 华为、荣耀

华为手机系统需要客户端和服务端配合实现角标功能。

服务端:

{
    "request_id": "fhfjkhwej478414",
    "settings": {
        "ttl": 259200000
    },
    "audience": {
        "cid": [
            "bae1fdd10477db63b17af9e76dd41863"
        ]
    },
    "push_message": {
        "notification": {
            "title": "个推在线标题",
            "body": "个推在线内容",
            "click_type": "url",
            "url": "https://www.getui.com/",
            //在线推送时,设置的华为角标,1表示在当前的角标数上+1。
            "badge_add_num": "1"
        }
    },
    "push_channel": {
        "android": {
            "ups": {
                "notification": {
                    "title": "厂商离线标题",
                    "body": "厂商离线内容",
                    "click_type": "url",
                    "url": "https://www.getui.com/"
                },
                "options": {
                    "HW": {
                        "/message/android/notification/badge/class": "应用入口Activity路径名称",
                        //add_num 为离线推送时,设置的华为角标,1表示在当前的角标数上+1
                        "/message/android/notification/badge/add_num": 1
                    },
                    "HO": {
                            "/android/notification/badge/addNum": 1,
                            //add_num 为离线推送时,设置的荣耀角标,1表示在当前的角标数上+1
                            "/android/notification/badge/badgeClass": "应用入口Activity类全路径名称"
                    }
                }
            }
        }
    }
}

客户端:

角标只能由客户端清理,客户端打开 app 可更改角标数或清空角标(设置角标数为 0): 客户端设置角标

在这篇文章中: 一、需求背景 二、功能实现
开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询