为了改善终端用户推送体验、营造良好可持续的通知生态,各大厂商陆续对推送的消息根据分类进行限额限频。
简介
根据推送内容对消息进行分类管理,可以自定义 Channel ID。
适用所有 Android 渠道
创建客户端自定义渠道
推送时下发对应的渠道 ID
参数名称
类型
是否必填
示例
描述
channelId
String
否
channelId: "channelIdTest"
Android 通知 channelId
若需要下发厂商通道重要级别消息,请参考下文各个厂商消息分类的使用指南
华为分类
厂商针对消息分类的说明
根据消息内容,华为推送将通知分类为 服务与通讯、资讯营销 两大类别,并对不同类别消息的提醒方式、消息样式进行差异化管理,具体如下:
消息类型 | 服务与通讯 | 资讯营销 |
推送内容 | 包括社交通讯类消息和服务提醒类消息。 | 包括资讯类消息和营销类消息,指的是运营人员向用户发送的活动信息、内容推荐、资讯等 |
提醒方式(EMUI 10.0及以上) | 锁屏、铃声、振动 | 静默通知,仅在下拉通知栏展示消息 |
消息样式 | 文本+小图 | 仅有文本 |
推送数量 | 不限量 | 自 2023.01.05 起,资讯营销类消息根据应用类型对每日推送数量进行上限管理,具体要求参见 不同应用类别的推送数量上限要求 |
配置方式 | 需要向华为申请自分类权益,审核通过后将信任开发者提供的分类信息,消息不经过智能分类。 | 默认 |
分类方式
消息智能分类
智能分类算法将根据您发送的内容等多个维度因素,自动将您的消息按照分类标准进行归类。
消息自分类
2021.07.01 起,华为推送服务开始接收开发者自分类权益的申请。申请成功后,允许开发者根据华为推送分类规范,自行对消息进行分类。
华为消息分类申请
自分类申请详情参见 华为消息分类管理方案。
若应用没有自分类权益,则应用的推送消息将通过智能分类进行自动归类。
若应用有自分类权益,将信任开发者提供的分类信息,消息不经过智能分类。
在 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计算 |
单用户推送限制(条/日) | 不限量 |
|
配置方式 |
| 默认开通 |
OPPO 私信通道申请
在 mPaaS MPS 上对接 OPPO 消息分类传参示例
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
channelId | String | 否 | channelId:"channelIdTest" | OPPO 私信通道 channelId |
vivo 消息分类
厂商针对消息分类的说明
通知开启的有效用户:应用集成的 push-sdk 订阅成功,且设备近 14 天内有联网的通知权限开启用户。
通知开启有效用户数<10000,则运营消息量级默认为 10000。
通知开启的有效用户数及可发送运营消息量级,可在推送运营后台查询。
推送限额数以 到达量 计算,当日到达量超限则计入管控。
消息类型 | 系统消息 | 运营消息 |
推送内容 | 用户需要及时知道的消息,如:即时消息、邮件、用户设置的提醒、物流等通知 | 用户关注程度较低的消息,如:内容推荐、活动推荐、社交动态等通知 |
通知栏权限 |
|
|
推送数量限制 | 3 倍通知开启有效用户数(可邮件申请消息不限量权限,详见 推送消息限制说明) |
|
用户接收数量限制 | 无限制 |
|
在 mPaaS MPS 上对接 vivo 二级消息分类传参枚举(thirdChannelCategory.vivo)
传参(String) | 含义 |
1 | IM 用户间点对点聊天消息(私信、群聊等),包括聊天消息中的图片、文件传输、音频(或视频)通话,不包括未关注人的私信、官方号或者商家批量推送给用户的私信或广告。以及邮件提醒。 |
2 | ACCOUNT 账号变动:账号上下线、状态变化、信息认证、会员到期、续费提醒、余额变动等。 资产变动:账户下的真实资产变动,交易提示、话费余额、流量、语音时长、短信额度等典型运营商提醒。 |
3 | TODO 与个人日程安排相关,需要提醒用户需要处理某件事项。
|
4 | DEVICE_REMINDER
|
5 | ORDER 电商购物、美食团购等各类商品服务中的订单相关信息,推送对象为用户。
|
6 | SUBSCRIPTION 用户主动订阅关注,并有预期在特定时机接收到消息:
重要 申请订阅类消息需要满足如下条件并提供完整证明:
|
7 | NEWS 新近发生的、有价值的事实新闻内容。 |
8 | CONTENT 内容型的信息推荐,包含热搜、点评、广告、书籍、音乐、视频、直播、课程、节目、游戏宣传、社区话题等。以及:
|
9 | MARKETING
|
10 | SOCIAL
|
在 mPaaS MPS 上对接 vivo 消息分类传参示例
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
classification | String | 否 | classification:"1" | 用于传递 vivo 推送通道的消息类型:
不填则默认为 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();
}