厂商消息分类

为了改善终端用户推送体验、营造良好可持续的通知生态,各大厂商陆续对推送的消息根据分类进行限额限频。

简介

根据推送内容对消息进行分类管理,可以自定义 Channel ID。

  • 适用所有 Android 渠道

  • 创建客户端自定义渠道

  • 推送时下发对应的渠道 ID

    参数名称

    类型

    是否必填

    示例

    描述

    channelId

    String

    channelId: "channelIdTest"

    Android 通知 channelId

  • 若需要下发厂商通道重要级别消息,请参考下文各个厂商消息分类的使用指南

华为分类

厂商针对消息分类的说明

根据消息内容,华为推送将通知分类为 服务与通讯、资讯营销 两大类别,并对不同类别消息的提醒方式、消息样式进行差异化管理,具体如下:

消息类型

服务与通讯

资讯营销

推送内容

包括社交通讯类消息和服务提醒类消息。

包括资讯类消息和营销类消息,指的是运营人员向用户发送的活动信息、内容推荐、资讯等

提醒方式(EMUI 10.0及以上)

锁屏、铃声、振动

静默通知,仅在下拉通知栏展示消息

消息样式

文本+小图

仅有文本

推送数量

不限量

2023.01.05 起,资讯营销类消息根据应用类型对每日推送数量进行上限管理,具体要求参见 不同应用类别的推送数量上限要求

配置方式

需要向华为申请自分类权益,审核通过后将信任开发者提供的分类信息,消息不经过智能分类。

默认

分类方式

消息智能分类

智能分类算法将根据您发送的内容等多个维度因素,自动将您的消息按照分类标准进行归类。

消息自分类

2021.07.01 起,华为推送服务开始接收开发者自分类权益的申请。申请成功后,允许开发者根据华为推送分类规范,自行对消息进行分类。

image.png

华为消息分类申请

自分类申请详情参见 华为消息分类管理方案

  • 若应用没有自分类权益,则应用的推送消息将通过智能分类进行自动归类。

  • 若应用有自分类权益,将信任开发者提供的分类信息,消息不经过智能分类。

在 mPaaS MPS 上对接华为消息分类传参枚举(thirdChannelCategory.hms)

传参(String)

含义

1

IM:即时聊天

2

VOIP:音视频通话

3

SUBSCRIPTION:订阅

4

TRAVEL:旅行类

5

HEALTH:健康

6

WORK:工作事项提醒

7

ACCOUNT:账号动态

8

EXPRESS:订单&物流

9

FINANCE:财务

10

DEVICE_REMINDER:设备提醒

11

SYSTEM_REMINDER:系统提示

12

MAIL:邮件

13

PLAY_VOICE:语音播报(仅透传消息支持)

14

MARKETING:内容推荐、新闻、财经动态、生活资讯、社交动态、调研、产品促销、功能推荐、运营活动(仅对内容进行标识,不会加快消息发送)

传参示例

参数名称

类型

是否必填

示例

描述

thirdChannelCategory

Map

thirdChannelCategory: {"hms": "9"}

示例传值为“9”表示华为 FINANCE 财务类型消息。其他取值详情请参见 厂商消息分类

荣耀分类

厂商针对消息分类的说明

根据消息内容,华为推送将通知分类为 服务与通讯、资讯营销 两大类别,具体如下:

消息类型

服务与通讯

资讯营销

推送内容

包括社交通讯类消息和服务提醒类消息。

包括资讯类消息和营销类消息,指的是运营人员向用户发送的活动信息、内容推荐、资讯等

提醒方式

锁屏展示+下拉通知栏展示,支持铃声、震动

静默通知,仅在下拉通知栏展示消息

消息样式

文本+小图

仅有文本

推送数量

不限量

资讯营销类消息根据应用类型对每日推送数量进行上限管理:

分类方式

消息智能分类

智能分类算法将根据您发送的内容等多个维度因素,自动将您的消息按照分类标准进行归类。

消息自分类

允许开发者根据消息分类规范,自行对消息进行分类。

在 mPaaS MPS 上对接荣耀消息分类传参枚举(thirdChannelCategory.honor)

传参(String)

含义

1

服务通讯类

2

资讯营销类

传参示例

参数名称

类型

是否必填

示例

描述

thirdChannelCategory

Map

thirdChannelCategory: {"honor": "1"}

示例传值为“1”表示荣耀服务通讯类消息

小米消息分类

厂商针对消息分类的说明

根据《小米推送消息分类新规》,小米推送将消息分为 私信消息公信消息 两个类别,若应用选择不接入私信或公信,则会接入 默认 通道。

消息类型

默认

公信消息

私信消息

推送内容

可按照小米的 公信场景说明

热点新闻、新品推广、平台公告、社区话题、有奖活动等,多用户普适性的内容

聊天消息、个人订单变化、快递通知、交易提醒、IoT 系统通知等与私人通知相关的内容

提醒方式

响铃、震动

推送数量限制

1 倍

2-3 倍,具体规则请参见“公信限制规则

不限量

用户接收数量限制

单个应用单个设备单日 1 条

单个应用单个设备单日 5-8 条

不限量

申请方式

无需申请

需在小米推送平台申请,详情请参见 channel 申请及接入方式

小米消息分类申请

申请方式请参见小米官方文档 channel 申请及接入方法

在 mPaaS MPS 上对接小米消息分类传参示例

参数名称

类型

是否必填

示例

描述

miChannelId

String

miChannelId:"miChannelIdTest"

小米厂商推送渠道的 channelId

OPPO 消息分类

厂商针对消息分类的说明

消息类型

私信

公信

推送内容

针对用户有一定关注度,且希望能及时接收的信息,如即时聊天信息、个人订单变化、快递通知、订阅内容更新、评论互动、会员积分变动等。

公信是针对用户关注度不高,且对于接收这类信息并无心理预期,如热点新闻、新品推广、平台公告、社区话题、有奖活动等,多用户普适性的内容

推送数量限制

不限量

有公信类通道共享推送次数,当日达到推送量限制后,所有公信类通道将不能再推送消息; 推送限量:当累计用户数<50000时,按100000计算;当累计用户数≥50000时,按累计用户数*2计算

单用户推送限制(条/日)

不限量

  • 新闻类(三级分类为新闻类):5 条

  • 其他应用类型:2 条

    应用类别以创建应用时应用基本信息所提交的“软件分类”为准;若需修改应用类别,可在移动应用列表-应用详情内进行应用资料更新

配置方式

  • 客户端创建自定义渠道。

  • 私信申请邮件通过后,需要在 OPPO 推送平台上登记该通道,并将通道对应属性设置为“私信”。

默认开通

OPPO 私信通道申请

在 mPaaS MPS 上对接 OPPO 消息分类传参示例

参数名称

类型

是否必填

示例

描述

channelId

String

channelId:"channelIdTest"

OPPO 私信通道 channelId

vivo 消息分类

厂商针对消息分类的说明

  • 通知开启的有效用户:应用集成的 push-sdk 订阅成功,且设备近 14 天内有联网的通知权限开启用户。

  • 通知开启有效用户数<10000,则运营消息量级默认为 10000。

  • 通知开启的有效用户数及可发送运营消息量级,可在推送运营后台查询。

  • 推送限额数以 到达量 计算,当日到达量超限则计入管控。

消息类型

系统消息

运营消息

推送内容

用户需要及时知道的消息,如:即时消息、邮件、用户设置的提醒、物流等通知

用户关注程度较低的消息,如:内容推荐、活动推荐、社交动态等通知

通知栏权限

  • 默认响铃、震动、消息外显

  • 默认锁屏、悬浮

  • 默认无响铃、无震动、应用不存活时消息收纳进盒子

  • 默认无悬浮、无锁屏

推送数量限制

3 倍通知开启有效用户数(可邮件申请消息不限量权限,详见 推送消息限制说明

  • 新闻类(三级分类为新闻类):3 倍通知开启有效用户数

  • 其他类:2 倍通知开启有效用户数

用户接收数量限制

无限制

  • 新闻类(三级分类为新闻类):5 条

  • 其他类:2 条

在 mPaaS MPS 上对接 vivo 二级消息分类传参枚举(thirdChannelCategory.vivo)

传参(String)

含义

1

IM 用户间点对点聊天消息(私信、群聊等),包括聊天消息中的图片、文件传输、音频(或视频)通话,不包括未关注人的私信、官方号或者商家批量推送给用户的私信或广告。以及邮件提醒。

2

ACCOUNT 账号变动:账号上下线、状态变化、信息认证、会员到期、续费提醒、余额变动等。

资产变动:账户下的真实资产变动,交易提示、话费余额、流量、语音时长、短信额度等典型运营商提醒。

3

TODO 与个人日程安排相关,需要提醒用户需要处理某件事项。

  • 会议提醒,开课提醒,预约提醒,差旅航班等出行相关消息。

  • 推送对象为服务提供方:工单处理、状态流程提醒等工作流程消息;商家接单/发货/售后提醒等订单消息。

  • 库存不足、售罄提醒、商品下架通知、限制提现、客诉警告、店铺限制、商品黑名单、交易违规、涉假/涉欺诈发货通知等商家运营提醒消息。

4

DEVICE_REMINDER

  • IoT设备发出的设备状态/信息/提示/告警等提醒消息

  • 健康设备的提醒,包括运动量(步数、骑行里程、游泳距离等)、身体数据(心率、体重、体脂、消耗卡路里等

  • 手机运行相关的提示及状态提醒

5

ORDER 电商购物、美食团购等各类商品服务中的订单相关信息,推送对象为用户。

  • 下单成功、订单详情、订单状态、售后进度等

  • 快递已发货、配送中,签收,取件等物流消息

6

SUBSCRIPTION 用户主动订阅关注,并有预期在特定时机接收到消息:

  • 主动订阅的专题内容、预约活动提醒、主动设置的直播开播提醒、书籍更新

  • 设置的商品或机票降价、商品开团提醒

  • 主动关注的行情动态提醒

  • 主动设置的签到打卡提醒

  • 付费订阅内容更新提醒等

重要

申请订阅类消息需要满足如下条件并提供完整证明:

  • 应用内支持用户“订阅/取消订阅”,用户界面需要至少出现“订阅”或“预约”等字样

  • 订阅是用户的主动行为,在用户未订阅的情况下,不向用户推送消息

  • 用户订阅后,应用内用户界面有明确提示,用户将收到订阅相关的推送消息。例如:您将收到 xx 消息推送

  • 订阅消息的范围不宜过于宽泛、不具体。例如:订阅行情资讯,则过于宽泛、不具体

  • 推送内容中需要体现该条推送是用户的订阅消息。例如:在消息标题或正文中携带“订阅消息”、“您订阅的……”等字样

7

NEWS 新近发生的、有价值的事实新闻内容。

8

CONTENT 内容型的信息推荐,包含热搜、点评、广告、书籍、音乐、视频、直播、课程、节目、游戏宣传、社区话题等。以及:

  • 各垂直类目的相关内容资讯

  • 天气预报:包括各类天气预报、天气预警提醒等

  • 出行资讯:包括交规公告、驾考信息、导航路况、铁路购票公告、疫情消息,道路管控等

9

MARKETING

  • 非用户主动设置,需用户参与的活动提醒、小游戏提醒、服务或商品评价提醒等。 如:抽奖、积分、签到、任务、分享、偷菜、领金币等

  • 商品推荐,包括红包折扣、商家服务更新、店铺上新等。如:可能感兴趣、商品达到最低价、满减、促销、返利、优惠券、代金券、送红包、信用分增加等相关的通知

  • 其他消息:用户调研问卷、功能介绍、邀请推荐、版本更新等

10

SOCIAL

  • 用户之间的社交互动提醒,如:好友动态、新增粉丝、添加好友、被赞、被@、被收藏、评论、留言、关注、回复、转发、陌生人消息等

  • 用户推荐:附近的人、大 V、主播、异性、可能认识的人等

在 mPaaS MPS 上对接 vivo 消息分类传参示例

参数名称

类型

是否必填

示例

描述

classification

String

classification:"1"

用于传递 vivo 推送通道的消息类型:

  • 0 - 运营类消息

  • 1 - 系统类消息

不填则默认为 1

thirdChannelCategory

Map

thirdChannelCategory: {"vivo": "1"}

示例传值为“1”表示vivo IM 类型消息

说明

classification 参数传“0”代表运营消息,不经过智能分类二次修正,直接从运营消息总量扣除额度,并受用户接收条数限制的频控。

classification 参数传“1”代表系统消息,经过智能分类二次修正,若智能分类识别出不是系统消息,会自动修正为运营消息,并扣除运营消息额度;若识别为系统消息,则从系统消息总量扣除额度。

MPS 对接厂商消息分类 Java 示例代码

厂商消息分类推送参数推荐都上传,MPS 会根据设备类型进行对应厂商分类参数的封装。

 DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
        // 创建 DefaultAcsClient 实例并初始化
        // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
        // 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
        // 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
        // 建议先完成环境变量配置
        String accessKeyId = System.getenv("MPAAS_AK_ENV");
        String accessKeySecret = System.getenv("MPAAS_SK_ENV");
        DefaultProfile profile = DefaultProfile.getProfile(
            "cn-hangzhou",          // 地域 ID
            accessKeyId,      
            accessKeySecret); 

IAcsClient client = new DefaultAcsClient(profile);
// Create an API request and set parameters
PushSimpleRequest request = new PushSimpleRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTaskName("测试任务");
request.setTitle("测试");
request.setContent("测试");
request.setDeliveryType(3L);
Map<String,String> extendedParam = new HashMap<String, String>();
extendedParam.put("key1","value1");
request.setExtendedParams(JSON.toJSONString(extendedParam));
request.setExpiredSeconds(300L);

request.setPushStyle(2);
String imageUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"fcmUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"iosUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
String iconUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"hmsUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
request.setImageUrls(imageUrls);
request.setIconUrls(iconUrls);

request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");

Map<String,String> target = new HashMap<String, String>();
String msgKey = String.valueOf(System.currentTimeMillis());
target.put("user1024",msgKey);
request.setTargetMsgkey(JSON.toJSONString(target));

//厂商消息分类字段

//封装VIVO消息分类一级分类
request.setClassification("1");
//封装华为消息分类、荣耀消息分类和VIVO消息分类二级分类
Map<String, String> map = new HashMap<>();
map.put("hms", "2");
map.put("vivo", "3");
map.put("honor", "1");
pushSimpleReq.setThirdChannelCategory(map);
//封装小米消息分类
pushSimpleReq.setMiChannelId("miChannelIdTest);
//封装OPPO消息分类
pushSimpleReq.setChannelId("channelIdTest");


// Initiate the request and handle the response or exceptions
PushSimpleResponse response;
try {
    response = client.getAcsResponse(request);
    System.out.println(response.getResultCode());
    System.out.println(response.getResultMessage());
} catch (ClientException e) {
    e.printStackTrace();
}