To improve the push notification experience for end users and create a healthy, sustainable notification ecosystem, major vendors have started to impose quotas and frequency limits on messages based on their classification.
Introduction
Classify and manage messages based on their content by defining a custom Channel ID.
This applies to all Android channels.
You can create a custom channel on the client.
You can pass the corresponding channel ID when pushing messages.
Parameter
Type
Required
Example
Description
channelId
String
No
channelId: "channelIdTest"
The channel ID for Android notifications.
To send important messages through vendor channels, see the user guides for message classification for each vendor.
Huawei classification
Vendor's explanation of message classification
Based on message content, Huawei Push classifies notifications into two main categories: Service and Communication and Information and Marketing. It manages the alert methods and message styles for each category differently.
Message type | Service and Communication | Content Marketing |
Push content | Includes social communication messages and service reminders. | Includes informational and marketing messages, such as operational activities, content recommendations, and news sent to users. |
Alert method (EMUI 10.0 and later) | Lock screen, ringtone, and vibration | Silent notification. The message is only displayed in the notification drawer. |
Message style | Text + small image | Text only |
Push quantity | Unlimited | Starting from January 5, 2023, a daily push limit is applied to Information and Marketing messages based on the application type. For specific requirements, see Push Quota Details for Different App Categories |
Configuration method | You must apply to Huawei for self-classification permissions. After approval, Huawei trusts the classification information you provide, and messages will not undergo smart classification. | Default |
Classification methods
Smart message classification
The smart classification algorithm automatically categorizes your messages based on classification standards, using multiple factors such as the content you send.
Message self-classification
Since July 1, 2021, Huawei Push Service has allowed developers to apply for self-classification permissions. After your application is approved, you can classify messages yourself according to Huawei Push classification standards.
Apply for Huawei message classification
For more information about applying for self-classification, see Huawei Message Classification Management Solution.
If an application does not have self-classification permissions, its push messages are automatically categorized by smart classification.
If an application has self-classification permissions, the classification information provided by the developer is trusted, and messages do not undergo smart classification.
Parameter enumeration for Huawei message classification on mPaaS MPS (thirdChannelCategory.hms)
Parameter (String) | Meaning |
1 | IM: Instant messaging |
2 | VOIP: Audio/video call |
3 | SUBSCRIPTION: Subscription |
4 | TRAVEL: Travel |
5 | HEALTH: Health |
6 | WORK: Work reminders |
7 | ACCOUNT: Account updates |
8 | EXPRESS: Orders and logistics |
9 | Finance |
10 | DEVICE_REMINDER: Device reminders |
11 | SYSTEM_REMINDER: System prompts |
12 | MAIL: Mail |
13 | PLAY_VOICE: Voice broadcast (only supported for pass-through messages) |
14 | MARKETING: Content recommendation, news, financial updates, lifestyle information, social updates, surveys, product promotions, feature recommendations, and operational activities (this only identifies the content and does not speed up message delivery) |
Parameter enumeration for HMS message alert level on mPaaS MPS (notifyLevel.hms)
Parameter (String) | Meaning |
1 | LOW: The expected alert method for the notification message is a silent alert. The phone does not ring or vibrate when the message arrives. |
2 | NORMAL: The expected alert method for the notification message is a strong alert. The phone rings or vibrates to alert the user when the message arrives. The actual alert method on the device is adjusted based on the value of the category field or the smart classification result (default). |
Parameter examples
Parameter | Type | Required | Example | Description |
thirdChannelCategory | Map | No | thirdChannelCategory: {"hms": "9"} | An example value of "9" indicates a Huawei FINANCE message. For details about other values, see Vendor message classification |
notifyLevel | Map | No | notifyLevel: {"hms": "1"} | An example value of "1" indicates that the expected alert method for the notification message is a silent alert. The phone does not ring or vibrate when the message arrives. |
Honor classification
Vendor's explanation of message classification
Huawei Push classifies notifications into two main categories based on message content: Service & Communication and News & Marketing.
Message type | Service and Communication | Content Marketing |
Push content | Includes social communication messages and service reminders. | Includes informational and marketing messages, such as operational activities, content recommendations, and news sent to users. |
Alert method | Displayed on the lock screen and in the notification drawer. Supports ringtones and vibration. | Silent notification. The message is only displayed in the notification drawer. |
Message style | Text + small image | Text only |
Push quantity | Unlimited | A daily push limit is applied to Information and Marketing messages based on the application type:
|
Classification methods
Smart message classification
The smart classification algorithm automatically categorizes your messages based on classification standards, using multiple factors such as the content you send.
Message self-classification
This feature allows developers to classify messages themselves according to message classification standards.
Parameter enumeration for Honor message classification on mPaaS MPS (thirdChannelCategory.honor)
Parameter (String) | Meaning |
1 | Service and Communication |
2 | Information and Marketing |
Parameter example
Parameter name | Type | Required | Example | Description |
thirdChannelCategory | Map | No | thirdChannelCategory: {"honor": "1"} | An example value of "1" indicates an Honor Service and Communication message. |
Xiaomi message classification
Vendor's explanation of message classification
According to the New Rules for Xiaomi Push Message Classification, Xiaomi Push divides messages into two categories: private messages and public messages. If an application does not use private or public channels, it will use the default channel.
Message type | Default | Public messages | Private messages |
Push content | Follow Xiaomi's Public Message Scenarios | Content applicable to many users, such as hot news, new product promotions, platform announcements, community topics, and prize-winning events. | Content related to private notifications, such as chat messages, personal order updates, delivery notifications, transaction alerts, and IoT system notifications. |
Alert method | None | None | Ringtone, vibration |
Push quantity limit | 1× | 2× to 3×. For specific rules, see "Public Message Limit Rules | Unlimited |
User receive limit | 1 message per application per device per day | 5 to 8 messages per application per device per day | Unlimited |
Application method | No application required | You must apply on the Xiaomi Push platform. For more information, see Channel Application and Connection Method | |
Apply for Xiaomi message classification
For more information about the application method, see the official Xiaomi document Channel Application and Connection Method.
Parameter example for Xiaomi message classification on mPaaS MPS
Parameter Name | Type | Required | Example | Description |
miChannelId | String | No | miChannelId:"miChannelIdTest" | The channelId for the Xiaomi vendor push channel. |
OPPO message classification
Old message classification
Vendor's explanation of message classification
Message type | Private | Credibility |
Push content | For information that users are interested in and want to receive promptly, such as instant chat messages, personal order updates, delivery notifications, subscription updates, comment interactions, and member point changes. | Public messages are for content that users are less interested in and do not expect to receive, such as hot news, new product promotions, platform announcements, community topics, and prize-winning events. |
Push quantity limit | Unlimited | The number of pushes is shared across public channels. If the daily push limit is reached, no more messages can be sent through any public channel. Push limit: If the cumulative number of users is < 50,000, the limit is calculated as 100,000. If the cumulative number of users is ≥ 50,000, the limit is calculated as cumulative users × 2. |
Per-user push limit (messages/day) | Unlimited |
|
Configuration method |
| Enabled by default |
Apply for an OPPO private channel
After your application email for a private channel is approved, register the channel on the OPPO Push platform and set the channel's attribute to Private.
Parameter example for OPPO message classification on mPaaS MPS
Parameter Name | Type | Required | Example | Description |
channelId | String | No | channelId:"channelIdTest" | OPPO Private Message Channel ID |
New message classification
Vendor's explanation of new message classification
OPPO Push divides messages into two main categories and provides corresponding permissions based on user interest in each category:
Message type | Scope | Push content focus | Alert method | Push volume |
Communication and Service |
|
| The default alert method is <Notification drawer, Lock screen>. This can be upgraded to a strong alert method of <Notification drawer, Lock screen, Banner, Ringtone, Vibration>, which requires an application. | Both sending and receiving volumes are unlimited. |
Content and Marketing | Notifications actively sent by developers to promote content or products to users. | Content recommendations, platform activities, social updates, and more. | Displayed only in the notification drawer. | The daily push volume and the number of messages a single user can receive are limited. For more information, see Push Service Restriction Details. |
The new message classification feature currently supports OS 13 and later. It will gradually become compatible with OS 12 and earlier.
The default alert method for Communication and Service messages is <Notification drawer, Lock screen>. You can apply for the strong alert method of <Notification drawer, Lock screen, Banner, Ringtone, Vibration> based on rules and requirements. Strong alerts can disturb users, so apply for and use them with caution.
Enable OPPO new message classification
To enable OPPO new message classification, see New Message Classification Connection Process.
Parameter enumeration for OPPO message classification on mPaaS MPS (thirdChannelCategory.oppo)
Parameter (String) | Meaning |
1 | IM: Instant messaging, audio, and video calls |
2 | ACCOUNT: Changes to personal accounts and assets |
3 | DEVICE_REMINDER: Personal device reminders |
4 | ORDER: Personal order/logistics status updates |
5 | TODO: Personal schedule/to-do items |
6 | SUBSCRIPTION: Personal subscriptions |
7 | NEWS: News and information |
8 | CONTENT: Content recommendations |
9 | MARKETING: Platform activities |
10 | SOCIAL: Social updates |
Parameter enumeration for OPPO message alert level on mPaaS MPS (notifyLevel.oppo)
Parameter (String) | Meaning |
1 | Notification drawer |
2 | Notification drawer + Lock screen |
16 | Notification drawer + Lock screen + Banner + Vibration + Ringtone |
If OPPO new message classification is not enabled, you do not need to set this field.
If OPPO new message classification is enabled and you pass the
notifyLevel.oppoparameter, the correspondingthirdChannelCategory.oppoparameter cannot be empty.
Parameter example
Parameter Name | Type | Required | Example | Description |
thirdChannelCategory | Map | No | thirdChannelCategory: {"oppo": "7"} | An example value of "7" indicates news and information. For details about other values, see Vendor message classification. |
notifyLevel | Map | No | notifyLevel: {"oppo": "2"} | An example value of "2" indicates "Notification drawer + Lock screen". For details about other values, see Notification bar messages. |
vivo message classification
Vendor's explanation of message classification
Active users with notifications enabled: Users for whom the integrated push SDK has successfully subscribed and whose devices have connected to the internet within the last 14 days.
If the number of active users with notifications enabled is less than 10,000, the default volume for operational messages is 10,000.
You can query the number of active users with notifications enabled and the available volume for operational messages in the push operations console.
The push quota is calculated based on the number of delivered messages. If the daily delivery count exceeds the limit, control measures are triggered.
Message type | System messages | Operational messages |
Push content | Messages that users need to know promptly, such as instant messages, emails, user-set reminders, and logistics notifications. | Messages that users are less interested in, such as content recommendations, event promotions, and social updates. |
Notification drawer permissions |
|
|
Push quantity limit | 3× the number of active users with notifications enabled. You can apply for unlimited message permissions by email. For more information, see Push Message Restriction Details. |
|
User receive limit | Unlimited |
|
Parameter enumeration for vivo level 2 message classification on mPaaS MPS (thirdChannelCategory.vivo)
Parameter (String) | Meaning |
1 | IM: Peer-to-peer chat messages between users (private messages, group chats, etc.), including images, file transfers, and audio/video calls within chats. This does not include private messages from unfollowed users, or private messages or ads sent in batches to users from official accounts or businesses. Also includes email reminders. |
2 | ACCOUNT: Account changes, such as account sign-in/sign-out, status changes, information verification, membership expiration, renewal reminders, and balance changes. Asset changes: Changes to real assets under the account, transaction alerts, and typical carrier reminders such as phone bill balance, data allowance, voice minutes, and text message quotas. |
3 | TODO: Related to personal schedules, reminding users to handle a specific task.
|
4 | DEVICE_REMINDER
|
5 | ORDER: Order-related information for various products and services, such as e-commerce shopping and group food purchases, sent to users.
|
6 | SUBSCRIPTION: Messages that users actively subscribe to and expect to receive at specific times:
Important To apply for subscription messages, you must meet the following conditions and provide complete proof:
|
7 | NEWS: Valuable, recent factual news content. |
8 | CONTENT: Content-based information recommendations, including top searches, reviews, ads, books, music, videos, live streams, courses, shows, game promotions, and community topics. Also includes:
|
9 | MARKETING
|
10 | SOCIAL
|
Parameter example for vivo message classification on mPaaS MPS
Parameter | Type | Required | Example | Description |
classification | String | No | classification:"1" | Used to pass the message type for the vivo push channel:
If not specified, the default is 1. |
thirdChannelCategory | Map | No | thirdChannelCategory: {"vivo": "1"} | An example value of "1" indicates a vivo IM message. |
Passing "0" for the classification parameter indicates an operational message. This message does not undergo secondary correction by smart classification. The quota is directly deducted from the total operational message volume and is subject to frequency control based on the number of messages a user can receive.
Passing "1" for the classification parameter indicates a system message. This message undergoes secondary correction by smart classification. If smart classification identifies it as an operational message, it is automatically corrected, and the quota is deducted from the operational message volume. If it is identified as a system message, the quota is deducted from the total system message volume.
Java code example for vendor message classification on MPS
We recommend uploading push parameters for all vendor message classifications. MPS will encapsulate the appropriate vendor classification parameters based on the device type.
import com.alibaba.fastjson.JSON;
import com.aliyun.mpaas20201028.Client;
import com.aliyun.mpaas20201028.models.PushSimpleRequest;
import com.aliyun.mpaas20201028.models.PushSimpleResponse;
import com.aliyun.teaopenapi.models.Config;
import java.util.HashMap;
import java.util.Map;
public static void main(String[] args) throws Exception {
// Your Alibaba Cloud account AccessKey has full access to all APIs. We recommend using a RAM user for API calls and daily O&M.
// We strongly recommend that you do not hard-code your AccessKey ID and AccessKey secret in your project code. Otherwise, your AccessKey may be leaked, which compromises the security of all resources in your account.
// This example shows how to store the AccessKey ID and AccessKey secret in environment variables. You can also store them in a configuration file as needed.
// We recommend configuring environment variables first.
Config config = new Config();
// Required. Your AccessKey ID.
config.setAccessKeyId(System.getenv("MPAAS_AK_ENV"));
// Required. Your AccessKey secret.
config.setAccessKeySecret(System.getenv("MPAAS_SK_ENV"));
// The REGION_ID and Endpoint for mPaaS. The example uses a non-financial region in Hangzhou.
config.setRegionId("cn-hangzhou");
config.setEndpoint("mpaas.cn-hangzhou.aliyuncs.com");
Client client = new Client(config);
// Create an API request and set parameters
PushSimpleRequest request = new PushSimpleRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("default");
request.setTenantId("xxx");
request.setTaskName("Test Task");
request.setTitle("Test");
request.setContent("Test");
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);
Map<String,String> target = new HashMap<String, String>();
String msgKey = String.valueOf(System.currentTimeMillis());
target.put("push_test",msgKey);
request.setTargetMsgkey(JSON.toJSONString(target));
// Vendor message classification fields
// Encapsulate the level 1 classification for vivo messages
request.setClassification("1");
// Encapsulate the level 2 classification for Huawei, Honor, and vivo messages
Map<String, String> map = new HashMap<>();
map.put("hms", "2");
map.put("vivo", "3");
map.put("honor", "1");
request.setThirdChannelCategory(map);
// Encapsulate the classification for Xiaomi messages
request.setMiChannelId("miChannelIdTest");
// Encapsulate the classification for OPPO messages
request.setChannelId("channelIdTest");
// Initiate the request and handle the response or exceptions
PushSimpleResponse response = client.pushSimple(request);
System.out.println(JSON.toJSONString(response));
}