背景
自2023年起,各个厂商逐步对营销类消息做数量管控,具体如下:
华为
自2023年1月5日起,华为PUSH通道将根据应用类型对资讯营销类消息的每日推送数量进行上限管理,服务与通讯类消息每日推送数量不受限制。详情请参考推送数量管理细则 文档中心。
为了不影响您账号应用的重要信息推送,建议您做出以下调整:
1、申请华为消息自分类权益功能。 消息分类标准以及自分类权益申请流程 文档中心
2、申请自分类权益后,您需要将华为服务端字段由importance调整为category,请在2023年3月31日前完成新方案的适配,补充category的传值。消息发送方案 文档中心
OPPO
自2023年1月15日起,OPPO PUSH推送服务将增加区分应用类型的推送频控限制,公信消息单用户限制2~5条,私信消息不受限。详情请登录OPPO PUSH开发者账号,管理中心查阅《【OPPO PUSH】推送服务规则更新说明》。
为了不影响您账号应用的重要信息推送,建议您做出以下调整:
1、申请OPPO PUSH私信通道权限 OPPO 开放平台-OPPO开发者服务中心
2、客户端创建私信通道 OPPO 开放平台-OPPO开发者服务中心
小米
自2023年2月1日起,小米推送通道将分为“私信消息”和“公信消息”两个类别,不同类别对应不同的权限,若应用选择不接入私信或公信,则会接入默认通道,单个应用单个设备单日1条消息。
详情查看:小米推送消息限制说明 文档中心。
为了不影响您账号应用的重要信息推送,建议您做出以下调整:
1、申请小米公私信渠道id 文档中心
华为小米oppo厂商限制对比:厂商限制对比
厂商分类解读
从上述厂商的限制策略可以看出基本上三家厂商对一些即时通讯、主动订阅、财务变更、订单物流等需要用户关注的信息会放开限制,保证用户必要消息的曝光权益;而对于新闻资讯、主动推荐、产品促销等偏营销类型的消息均做了限制。
因此,需要开发者针对app的场景,将重要消息合理利用厂商的规则提高曝光度。
服务与通讯/私信消息类型中,除IM、订单物流、财产交易、健康、出行、设备提醒等使用场景较为固定,其他如主动订阅、账户状态可用于标识出App较为重要的事项提醒,但是需要注意的是,华为和小米对主动订阅需要提供相应证明材料,如app的截图,才可以申请使用。
资讯营销/公信消息的限制较为严格,限制规则如下:
华为:新闻类单设备单日5条,其余类型单设备单日2条,消息发送总量不限制。
小米:新闻类单设备单日8条,其余类型单设备单日5条,消息发送总量为注册用户的2-3倍。
OPPO:新闻类单设备单日5条,其余类型单设备单日2条,消息发送总量为注册用户的2倍。
另外需要注意的是,适配厂商服务与通讯/私信类消息时,OPPO还需要客户端主动创建该Channel,再在OPPO后台申请对应的Channel
极光适配方案
针对厂商的限制,极光已在服务端进行适配,具体方案如下:
华为
极光兼容华为的自分类推送方式,目前仅支持通过API形式推送设置相关参数,具体需要设置如下两个字段:
配置位置在options.third_party_channel.huawei路径下
字段 | 类型 | 选项 | 含义 | 说明 |
importance | string | 可选 | 华为、荣耀通知栏消息智能分类 | 为了适配华为、荣耀手机厂商的通知栏消息智能分类,对应华为/荣耀的 importance 字段,不填充则不下发,参考:华为通知消息智能分类 、荣耀通知消息分类标准。 ● LOW:一般消息。 ● NORMAL:重要消息。 |
category | string | 可选 | 华为厂商消息场景标识 | 为了适配华为手机厂商消息,标识高优先级透传消息的特殊场景,或用于标识消息类型以对特定类型消息加快发送;对应值及其说明参考:category 值说明。 |
其中importance可设置为NORMAL,标识为重要消息,会有消息提醒,也可以不设置(如设置为LOW,则消息静默展示)。category设置在华为后台申请的自分类的场景标识,如即时通讯类传IM。
数据结构如下:
"options":{
"third_party_channel":{
"huawei":{
"distribution":"secondary_push",
"importance":"NORMAL",
"category":"IM"
}
}
}
小米、OPPO
极光兼容小米和OPPO的分类推送方式,目前支持通过API和portal的形式推送设置相关参数,具体需要设置如下两个字段:
API方式配置位置在options.third_party_channel.xiaomi/oppo路径下
字段 | 类型 | 选项 | 含义 | 说明 |
channel_id | string | 可选 | 通知栏消息分类 | 为了适配小米、华为、oppo 手机厂商通知栏消息分类,由开发者自行向手机厂商申请,具体申请规则参考:厂商消息分类使用指南 |
数据结构如下:
"options":{
"third_party_channel":{
"xiaomi":{
"distribution":"secondary_push",
"channel_id":"10086"
},
"oppo":{
"distribution":"secondary_push",
"channel_id":"10086"
}
}
}
Portal后台方式在消息推送-创建推送-高级选项-Android配置-通知提醒模板下:
首先选择新建消息提醒模板
然后填充并设置渠道ID为在小米OPPO厂商创建的channel_id
注意:因为目前此处仅可以设置一个channel_id,因此建议小米和oppo厂商申请同样的channel_id字符串。
OPPO在申请相应channel_id前,还需客户端主动创建对应channel并发版,创建方法参考如下代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (nm != null){
NotificationChannelGroup notificationChannelGroup = new NotificationChannelGroup("MyGroupId", "自定义通知组");
nm.createNotificationChannelGroup(notificationChannelGroup);
NotificationChannel notificationChannel = new NotificationChannel("MyChannelId", "自定义通知", NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setGroup("MyGroupId");
notificationChannel.enableLights(true);
notificationChannel.enableVibration(true);
notificationChannel.setSound("android.resource:// 包名 /raw/ 铃声文件", null); // 设置自定义铃声
nm.createNotificationChannel(notificationChannel);
}
}
服务端SDK适配
服务端需要在third_party_channel添加的自定义字段,适配代码以java sdk为例:
client sdk版本3.6.6,common sdk版本 1.2.2
Map<String,JsonObject> third_party_channel = new HashMap<>();
JsonObject hwParam = new JsonObject();
hwParam.addProperty("distribution","secondary_push");
hwParam.addProperty("importance","NORMAL");
hwParam.addProperty("category","IM");
JsonObject xmParam = new JsonObject();
xmParam.addProperty("distribution","secondary_push");
xmParam.addProperty("channel_id","10086");
JsonObject oppoParam = new JsonObject();
oppoParam.addProperty("distribution","secondary_push");
oppoParam.addProperty("channel_id","10086");
third_party_channel.put("huawei",hwParam);
third_party_channel.put("xiaomi",xmParam);
third_party_channel.put("oppo",oppoParam);
Options option = Options.newBuilder()
.setApnsProduction(false)
.setTimeToLive(43200)
.setThirdPartyChannelV2(third_party_channel)
.build();
//然后在payload构建时,setOptions中传入option
//以上参数为举例,实际options需要的参数以业务需要为准
其他说明
因总体营销资讯/公信类消息单机有接收数量限制,因此建议在营销资讯/公信类中发送较为重要的运营消息,其他如一些社交动态如点赞、评论等的消息可以暂时不做频繁使用或根据业务场景看是否可以引导用户进行主动订阅走私信消息。