Push deliveries can fail because vendor channels have different push limitations and some vendors categorize messages. To prevent these failures, understand the push limitations of each vendor and, where required, apply for message categories for your application to meet their platform requirements. This article outlines best practices for vendor channel push limitations and message categories.
Vendor push limits and message classification
|
Vendor |
Message type |
Total daily push limit |
Per-device reception limit |
Other limits |
|
Huawei |
Service and communication message |
Unlimited |
Unlimited |
|
|
Information and marketing message |
Unlimited |
News (level-3 classification is News): 5 messages Others: 2 messages |
||
|
Honor |
Service and communication message |
Unlimited |
Unlimited |
|
|
Information and marketing message |
Unlimited |
News (level-3 classification is News): 5 messages Others: 2 messages |
||
|
Xiaomi |
Private message |
Unlimited |
Unlimited |
|
|
Public message |
Calculated by multiplying the |
5 to 8 messages per app, per device, per day. |
||
|
Default |
1× |
1 message per app, per device, per day. |
||
|
OPPO |
Communication and Service (formerly private messages) |
Unlimited |
Unlimited |
|
|
Content and Marketing (formerly public messages) |
If |
News (level-3 classification is News): 5 messages Other app types: 2 messages. |
||
|
vivo |
System message |
3 times the |
Unlimited |
|
|
Operational message |
News (level-3 classification is News): 3 times the Others: 2 times the |
News (level-3 classification is News): 5 messages Others: 2 messages |
||
|
Meizu |
/ |
/ |
After 4 messages, subsequent messages are collapsed. |
|
|
|
/ |
/ |
/ |
|
|
HarmonyOS |
Service and communication message |
Unlimited |
An app's total daily messages to a single device—including service, marketing, and other types—is limited to 3,000. |
|
|
Information and marketing message |
Unlimited |
News (requires an Internet News Information Service License): 5 messages Others: 2 messages |
||
|
APNs |
/ |
/ |
/ |
|
HUAWEI
Push limits
Push limit
According to its Push Quantity Management Rules, Huawei uses a message classification system to manage the number of notifications by category. As of January 5, 2023, daily pushes for information and marketing messages are capped by application type, while service and communication messages have no daily limit:
|
Message type |
Daily push limit |
User daily limit per app |
|
Service and communication messages |
Unlimited |
Unlimited |
|
Informational and marketing messages |
Unlimited |
News (Requires Internet News Information Service License): 5 messages Others: 2 messages |
As of September 15, 2023, a new Huawei policy governs all notifications on its devices, regardless of an app's online or offline status. This includes limits on the number of notifications sent and how they are displayed. For details, see New Control Rules and Adaptation for Huawei Push Service.
Push rate QPS limit
QPS is calculated by multiplying the MAU for an application in the Huawei channel by the application category weight and the overall allocation coefficient.
-
MAU: monthly active users.
-
application category weight: If your application is not published on HUAWEI AppGallery, it is classified as Default, with a weight of 1.
-
overall allocation coefficient: A dynamic coefficient used for QPS calculation. You do not need to calculate this value, as you can view it in AppGallery Connect. For instructions, see the Huawei FAQ document.
-
If your application's calculated QPS is less than 6,000, the system applies a default QPS of 6,000. High overall network traffic may also trigger system-level flow control. For more information, see message control issues.
To request a QPS adjustment, please email Huawei at hwpush@huawei.com.
Message classification
According to the Message Classification Standard, Huawei Push Kit classifies notification messages as: Promotional Information and Service & Communication.
Message classification
1. Specific message types
-
Follow the process in the Huawei self-categorization privilege application to apply for one or more category parameters.
-
The Huawei channel offers two self-categorization privilege parameters: importance and category.
-
importance: Specifies the notification method. NORMAL indicates an important message, and LOW indicates a low-priority message.
-
category: Consists of the cloud notification category and local notification category. The delivery behavior is as follows:
-
If values are provided for both the cloud and local notification categories, specify only the cloud notification category value. Push result: Messages are delivered through the Alibaba Cloud channel when the app is online and through the Huawei channel when the app is offline.
-
If the cloud notification category is "Not involved" and a value is provided for the local notification category, specify only the local notification category value. Messages are delivered exclusively through the Alibaba Cloud channel.
-
If the local notification category is "Not supported" and a value is provided for the cloud notification category, specify only the cloud notification category value. Messages are delivered exclusively through the Huawei channel.
-
|
Category |
Sub-category |
Type |
Cloud category value |
Local category value |
Notification method |
|
Service and communication |
Social communication |
IM |
IM |
CATEGORY_MESSAGE |
These notifications appear on the lock screen with a ringtone and vibration. Their NORMAL importance level classifies them as important messages. |
|
VoIP |
VoIP |
CATEGORY_CALL |
|||
|
Service reminders |
Subscription |
SUBSCRIPTION |
Not supported |
||
|
Travel |
TRAVEL |
CATEGORY_NAVIGATION |
|||
|
Health |
HEALTH |
Not supported |
|||
|
Work item reminders |
WORK |
CATEGORY_REMINDER |
|||
|
Account activity |
ACCOUNT |
Not supported |
|||
|
Order and logistics |
EXPRESS |
Not supported |
|||
|
Finance |
FINANCE |
CATEGORY_SERVICE |
|||
|
Device reminder |
DEVICE_REMINDER |
Not supported |
|||
|
|
|
CATEGORY_EMAIL |
|||
|
Alarm/timer |
Not applicable |
CATEGORY_ALARM |
|||
|
Stopwatch |
Not applicable |
CATEGORY_STOPWATCH |
|||
|
Progress |
Not applicable |
CATEGORY_PROGRESS |
|||
|
Location sharing |
Not applicable |
CATEGORY_LOCATION_SHARING |
|||
|
Information and marketing |
Content information |
Content recommendation |
MARKETING |
CATEGORY_RECOMMENDATION |
These notifications are delivered silently and appear only in the notification drawer. Their LOW importance level classifies them as general (silent) messages. |
|
News |
|||||
|
Financial updates |
|||||
|
Lifestyle information |
|||||
|
Surveys |
|||||
|
Other |
|||||
|
Social updates |
CATEGORY_SOCIAL |
||||
|
Marketing campaigns |
Product promotion |
MARKETING |
CATEGORY_PROMO |
||
|
Feature recommendation |
|||||
|
Promotional events |
2. High-priority pass-through scenario
This feature requires special permissions from the Huawei platform. See Apply for Special Permissions for details. Possible values for category are VOIP (audio and video call) and PLAY_VOICE (voice broadcast).
Message classification
-
Prerequisites: You have integrated the Android SDK and the Huawei push channel.
-
Once your application for the Huawei self-classified messaging permission is approved, use the EMAS console or OpenAPI to send categorized push notifications.
Pushing from the EMAS console
To send a push notification using the push service in the EMAS console, navigate to vendor settings > notification channels and notification categories, select the Huawei channel, and then choose the appropriate message type.

OpenAPI push
When calling the advanced push API, pass the following parameters:
-
AndroidMessageHuaweiCategory: Specifies the
categoryvalue for a cloud notification or local notification on the Huawei channel. -
AndroidNotificationHuaweiChannel: Specifies the importance parameter for the Huawei channel.
-
Typically, you only need to pass the
AndroidMessageHuaweiCategoryparameter. If you want to send service and communication messages as silent notifications (with no ringtone or vibration), you can also add theimportancefield and set its value toLOW.
Other settings
Test message
1) To call the advanced push API, set the following parameters:
-
AndroidHuaweiTargetUserType = 1: Enables direct push. Each application can send up to 500 test messages per day, which are not subject to the daily push limit.

-
AndroidTargetUserType=1: Setting this parameter is equivalent to setting the AndroidHuaweiTargetUserType, AndroidHonorTargetUserType, and AndroidVivoPushMode parameters simultaneously.

2) To send a push notification using the EMAS console push service, navigate to vendor settings and disable the production notification for the Huawei channel.

Honor
Push limits
Push quota
Honor Push Service uses the message classification standard to classify notification messages into two categories: information and marketing, and service and communication. The following table lists the message limits.
|
Message type |
Overall daily limit |
Per-user daily limit |
|
Service and communication |
Unlimited |
Unlimited |
|
Information and marketing |
Unlimited |
news (level-3 category): 5 messages others: 2 messages |
QPS limit
The QPS is 3,000.
Honor is not currently accepting increase requests.
Message classification
To enhance the push experience for end users, Honor Push Service classifies push messages. For more information, see the Honor Message Classification Standard.
Applications must apply for self-classification rights on the Honor Developer Service Platform by December 31, 2024, to classify and manage push messages.
If an application has not applied for self-classification rights, or if it has self-classification rights but a push message does not include the importance field, the message is automatically classified as News and Marketing Messages.
Message classification
-
Honor Push Service classifies push messages into two categories based on application type, message content, and sending scenario: service and communication messages (NORMAL) and news and marketing messages (LOW). The classification parameter is importance.
-
Based on the message classification, each category has a different notification method and importance value:
|
Message type |
Value |
Notification method |
|
System notification |
NORMAL |
Displays on the lock screen and in the notification drawer, with ringtone and vibration. |
|
Marketing notification |
LOW |
Displays as a silent notification in the notification drawer only. |
-
Honor Push Service handles message classification in two ways:
-
Intelligent message categorization
-
An intelligent algorithm automatically categorizes your messages based on factors such as app type and message content, according to the classification standards.
-
-
Manual message categorization
-
Developers can manually categorize messages according to the classification guidelines. To apply for this capability, see Application for Manual Categorization.
-
Manual message categorization is currently the default for all messages. As the Honor Push Service evolves, these classification methods will be updated. For more information, see Honor Message Categorization Standard.
-
Message classification
-
Prerequisites: Complete the Android SDK integration and the Honor channel integration.
-
Once your application for Honor self-classified messaging is approved, send categorized messages using the EMAS console or OpenAPI.
EMAS console push
To send a push notification using the EMAS console push service, go to Vendor Configurations - Notification Channel and Notification Category, select the Honor channel, and choose the corresponding message type.
-
For informational and marketing messages, importance is LOW. By default, they appear as silent notifications, appearing only in the notification shade.
-
For service and communication messages, importance is NORMAL. By default, they appear on the lock screen and in the notification shade.

OpenAPI push
When calling the advanced push API, pass the following parameters:
-
When AndroidNotificationHonorChannel is set to LOW, the message is classified as a marketing and promotional message and delivered as a silent notification by default, appearing only in the notification drawer.
-
When AndroidNotificationHonorChannel is set to NORMAL, the message is classified as a service and communication message and displayed on the lock screen and in the notification drawer by default.
Additional settings
Send test message
1. To call the Advanced Push API, set the following parameters:
-
AndroidHonorTargetUserType = 1: Direct push. Each application can send 500 test messages per day, and these messages do not count against the daily push limit.

-
AndroidTargetUserType=1. This has the same effect as setting the
AndroidHuaweiTargetUserType,AndroidHonorTargetUserType, andAndroidVivoPushModeparameters.

2) When using the EMAS console push service to send a push notification, go to vendor settings and turn off the production notification for the Honor channel.

Xiaomi
Push limits
Push quantity limit
Effective February 1, 2023, under the New Mi Push Message Classification Rules, Mi Push will require messages to be classified into two categories: private messages and public messages. If an application does not specify a category, its messages are sent through the default channel.
|
Message type |
Total daily push limit |
Daily message limit per user per app |
|
default |
1x |
1 message |
|
official public message |
With an Internet News Information Service License: 3x Others: 2x |
With an Internet News Information Service License: 8 messages Others: 5 messages |
|
private message |
Unlimited |
Unlimited |
-
The total daily push quota for formal messages is calculated using the formula: notification-enabled installation count on MIUI × multiplier. The default multiplier is 2. For applications that have an Internet News Information Service License, the multiplier is 3. If the notification-enabled installation count is less than 10,000, it is treated as 10,000.
-
A notification-enabled installation on MIUI is defined as an installation where a user has activated the application and manually enabled the main notification switch.
-
The daily push quota is based on the delivery count. Exceeding this quota triggers throttling.
QPS limit for push rate
Mi Push tiers an app's push rate (QPS) primarily based on the number of installations with notifications enabled.
QPS: The number of requests per second. Each request can contain up to 1,000 target devices. For example, at 3,000 QPS, you can push to up to 3 million devices per second.
QPS is tiered based on the number of devices that have notifications enabled:
|
Enabled notification switches |
QPS |
|
≥10,000,000 |
3,000 |
|
≥5,000,000 and <10,000,000 |
2,500 |
|
≥1,000,000 and <5,000,000 |
2,000 |
|
≥100,000 and <1,000,000 |
1,000 |
|
<100,000 |
500 |
Xiaomi is not currently accepting requests for QPS increases.
Application publishing limitations
Your app must be published before you can enable the Xiaomi push service.
Message classification
If your push quota is insufficient, you can optimize your push policy. Alternatively, if any of your messages qualify as private messages, you can request access to the private message feature. Once enabled, these messages will bypass push limits.
For the Xiaomi channel, each application is limited to 8 channels. Please plan accordingly.
Message classification
According to the Xiaomi Push Message Classification Rules, Xiaomi Push classifies messages as either private messages or public messages. If an application does not specify a message category, it uses the default channel.
-
Private Message: Push and receive quotas are unlimited. For details, see Private Message Scenario Description. Approval required. To apply, see Channel Application and Access Method.
-
Public Message: Push and receive quotas are limited. For details, see Public Message Restriction Rules. Approval required. To apply, see Channel Application and Access Method.
-
Default: This is the default channel if you do not apply for a private or public message channel. It has the strictest limits, allowing a device to receive only one message per application per day.
If you need a higher message quota (for example, if many users report not receiving messages), you can request an increase from Mi Push. For instructions, see Mi Push Message Quota Appeal.
Message classification
-
Prerequisites: You have completed Android SDK integration and Xiaomi channel integration.
-
Once your application for a Xiaomi self-classified message is approved, a corresponding channel_id is automatically generated. You can use the EMAS console and OpenAPI to push classified messages.
EMAS Console push
When using Mobile Push in the EMAS console to send a notification, go to Third-party Settings - Notification Channels and Categories, select the Xiaomi channel, and enter the channel_id of the approved channel. If you leave this field blank, the default channel is used.

OpenAPI push
When calling the push advanced API, specify the parameters:
-
AndroidNotificationXiaomiChannel is the channel_id provided after your message classification request is approved; if omitted, the default channel is used.
Private message template
Application template
As announced in the Xiaomi notice on new push rules for message templates, Xiaomi's new message template regulations will take effect at 00:00 on July 1, 2026. The deadline to complete the template integration and upgrade is 23:59 on December 31, 2026. Under these new regulations, you must send all direct messages with both a channel_id and a template ID. If you have already integrated the Xiaomi direct message service, you must complete the template integration and upgrade by December 31, 2026. Failure to meet this deadline will disrupt the delivery of your direct messages.
After applying for a Xiaomi private message template, you can use it to push private messages. To apply for and integrate the template, see Xiaomi push private message template integration instructions.
Private message template
The parameters for pushes sent via the PushV2 and MassPushV2 APIs are located in PushTask under PushTask.Notification.Android.Options.Xiaomi:
-
ChannelThechannel_idassigned once your application for Xiaomi message classification is approved. This parameter is required when pushing messages using a Xiaomi private message template. -
TemplateIdThe Xiaomi private message template ID. -
TemplateParamsThe parameters for the Xiaomi private message template, formatted as a JSON object string.
The parameters for the Push and MassPush interfaces are as follows:
-
AndroidNotificationXiaomiChannelThe channel_id assigned after your application for a Xiaomi notification channel is approved. This parameter is required when pushing messages with a Xiaomi private message template. -
AndroidXiaomiTemplateIdThe Xiaomi private message template ID. -
AndroidXiaomiTemplateParamsThe Xiaomi private message template parameters, specified as a JSON object string.
When specifying a template ID, you must also provide the Xiaomi channel. When specifying template parameters, you must also provide a template ID.
OPPO
Push limitations
To improve the user notification experience and maintain a healthy push ecosystem, OPPO PUSH limits the number of pushes and the push rate (QPS). If you exceed these limits, the OPPO platform throttles your pushes and returns an error message in the message receipt. For more information, see OPPO PUSH service limitations.
Push throttling
OPPO offers two types of push permissions: formal permission and test permission. The new message classification system has two categories: Communication and Service and Content and Marketing. Applications that have not adopted the new message classification system default to the legacy Private Message and Public Message categories. The specific limits are as follows:
|
Push permission |
Message category |
Application category |
Daily push quota |
Daily user limit per app |
|
Official permission (For apps published on the OPPO App Market) |
Communication and services (formerly private message) |
/ |
Unlimited |
Unlimited |
|
Content and marketing (formerly public message) |
News (level-3 category) |
If the cumulative user count is less than 10,000, the total quota is 20,000. If the cumulative user count is 10,000 or more, the total quota is twice the cumulative user count. |
5 messages |
|
|
Other app types |
2 messages |
|||
|
Test permission (For apps not published on the OPPO App Market) |
Communication and services (formerly private message) |
/ |
Not supported |
|
|
Content and marketing (formerly public message) |
/ |
1,000 |
2 messages |
|
-
Cumulative users: The total number of users who have installed and activated the app and enabled the main notification switch within the last 30 days, excluding uninstalled users. This metric is updated daily on the OPPO Push Operations Platform.
-
If your app is unpublished on the OPPO software store, you must apply for test permissions and add test devices before sending test messages.
-
If you have formal push permissions, you can also add test devices on the OPPO Push Operations Platform under Configuration Management > Test Devices. The push limit per device does not apply to test messages sent to these devices.
Push QPS limit
OPPO Push sets QPS tiers based on an application's total user count.
QPS (Queries Per Second) is the number of users you can send notifications to per second via OPPO PUSH. For example, a rate limit of 3,000 QPS at the application level means an application can send notifications to up to 3,000 users per second. All interfaces share this application-level rate limit.
|
Cumulative users |
QPS |
|
≥10 million |
5,000 |
|
≥5 million and <10 million |
3,000 |
|
<5 million |
2,000 |
Message classification
OPPO currently provides both legacy and new message classification methods. For applications that enabled OPPO Push before November 20, you can use either the new message classification method or the legacy self-built channel. However, for applications that enable OPPO Push on or after November 20, you must use the new message classification method. The legacy self-built channel is no longer supported, and all messages must include the new message classification field for successful delivery.
If your push quota is insufficient, optimize your push policy. Depending on the message type, apply for the new message category or private message channel. Using these channels makes your marketing and public communications more efficient.
New message classification
OPPO push will optimize its message sending channel and message classification, launching a new message classification access method on October 31, 2024.
Message classification
Per the OPUSH Message Classification Rules, OPPO classifies notifications into two main categories: Communication and Service, and Content and Marketing. Messages not classified as Communication and Service default to Content and Marketing. The values and notification methods for different message types are as follows:
|
Message category |
Message type |
Category value |
Notification method |
Notify_level value |
|
Communication and Services |
Instant messaging, audio, and video calls |
IM |
Default: notification bar and lock screen. Can be upgraded to a high-priority notification that also includes a banner, ringtone, and vibration. (Application required. For details, see High-priority Notification Application). |
|
|
Personal account and asset changes |
ACCOUNT |
|||
|
Personal device reminder |
DEVICE_REMINDER |
|||
|
Personal order and logistics updates |
ORDER |
|||
|
Personal schedule/to-do |
TODO |
|||
|
Personal subscription |
SUBSCRIPTION |
|||
|
Content and Marketing |
News |
NEWS |
Displays only in the notification bar. |
The value is 1. |
|
Content recommendation |
CONTENT |
|||
|
Platform activity |
MARKETING |
|||
|
Social feed |
SOCIAL |
New OPPO message classification: Application Process
-
To use the new message classification feature, you must enable it on the OPPO Push Platform. For details, see Section 3: New Message Classification Integration Process in the Message Classification Rules. Once enabled, all push notifications use the new classification format by default. Assess the impact before you proceed.
-
If you do not integrate the Communication and Service category, messages default to the Content and Marketing category, and you do not need to apply.
-
If you need to send messages in the Communication and Service category, you must apply for permission online. For details, see Section 4.1: Default Reminder Application in the Message Classification Rules. After your application is approved, the OPPO Push Platform automatically adds the Communication and Service message category. By default, alerts appear on the notification bar and lock screen. If you already have permission for the legacy private message channel, you do not need to apply again.
-
If you use the Communication and Service category and also require critical alerts, you can apply according to the rules. For details, see Section 4.2: Critical Alert Application in the Message Classification Rules. A critical alert is delivered to the notification bar and lock screen, and includes a banner, ringtone, and vibration. Because critical alerts can be disruptive to users, please use this feature with caution.
The new OPPO message classification feature currently supports OS 13 and later. We will gradually extend support to OS 12 and earlier versions.
Message classification
-
Prerequisites: Complete Android SDK integration and OPPO channel integration.
-
After your application for the new OPPO message classification permission is approved, you can use OpenAPI to send categorized push notifications. We recommend specifying both AndroidMessageOppoCategory and the legacy channel ID to ensure reach for users on older versions.
OpenAPI push method
When you call the advanced push API, pass the corresponding parameters:
-
AndroidMessageOppoCategory: The value for OPPO's category parameter.
-
AndroidMessageOppoNotifyLevel (Optional): The value for OPPO's notify_level parameter. To use this parameter, you must also specify AndroidMessageOppoCategory.
Legacy channel message classification
Legacy channel message classification
Under the legacy OPPO Message Classification Rules, messages are classified into two categories: private messages and public messages. If an application has not implemented message classification, its messages are considered public messages by default and are subject to the corresponding rules. The private message channel has no limits on the number of messages that can be sent or received.
|
Type |
Configuration method |
Value |
|
Private message |
Once your email request is approved, register the channel on the OPPO Push Platform, setting the channel attribute to private message. |
Channel ID |
|
Public message |
Enabled by default |
/ |
Requesting private messages:
-
Follow the instructions in Android 8.0 notification channel settings to create a notification channel and specify its channel ID in your app's code. Then, publish a new app version that includes this channel.
-
Use the OPPO private message email template to email OPPO and request that the channel be designated as a private message channel.
-
Register the channel on the OPPO Push Platform and set its corresponding attribute to private message.
-
The channel ID cannot be changed or deleted once set.
-
When you create a private message channel, review the notes on channel adaptation.
-
The private message channel permissions take effect only after the client creation and release is complete, the channel is registered on the OPPO Push Platform, and your email application for private message privileges is approved.
-
The channel creation code examples in Android 8.0 notification channel settings include feature settings like vibration and sound. These settings apply only to notification channels on Android 8.0 and later. For OPPO offline channels, you must configure these features using the custom notification style interface.
Legacy channel message classification
-
Prerequisites: You have completed the Android SDK integration and the OPPO vendor channel integration.
-
Once the OPPO direct message channel permission is active, you can use the EMAS console and OpenAPI to push categorical messages.
EMAS console push
To send a push notification from the EMAS console, configure the following settings:
-
Under Vendor Settings - Notification Channels and Notification Categories, select OPPO Channel.
-
In the Push Settings section, if you specify a channel ID, offline messages are sent via the OPPO private message channel. If you do not specify a channel ID, they are sent via the OPPO public message channel by default.

OpenAPI push
When you call the advanced push API, pass AndroidNotificationChannel. This parameter serves two purposes:
-
When the app is online, messages are delivered through the Alibaba Cloud online channel. The AndroidNotificationChannel parameter specifies the client-created notification channel.
-
When the app is offline, messages are delivered through the OPPO vendor channel. The AndroidNotificationChannel parameter specifies the provisioned OPPO private message channel.
Direct message template
Application template
OPPO requires new users to push communication and service messages (previously direct messages) using a message template. Existing users must complete this upgrade by December 31, 2025. To integrate direct message templates, see the OPUSH direct message template validation integration guide.
Direct message template
After your private message template is approved, use the PushV2 and MassPushV2 APIs to send pushes. The relevant parameters can be found in the PushTask object under PushTask.Notification.Android.Options.Oppo:
-
PrivateMsgTemplateIdThe ID of the private message template. -
PrivateTitleParametersThe title parameters for the private message template. -
PrivateContentParametersThe content parameters for the private message template.
The parameters for the Push API are as follows:
-
AndroidOppoPrivateMsgTemplateIdThe ID of the private message template. -
AndroidOppoPrivateTitleParametersThe parameters for the private message template's title. -
AndroidOppoPrivateContentParametersThe parameters for the private message template's content.
vivo
Push Limits
Daily push limit
Per the push notification limits, vivo Push classifies messages into two main categories: system message and operational message. If message classification is not implemented, messages are categorized as operational message by default. Each category has different limits:
|
Message type |
Application category |
Total push limit |
Limit per user |
|
System message |
/ |
3× the number of valid users with notifications enabled (You can apply for an unlimited quota.) |
Unlimited |
|
Operational message |
News & Information (Requires both an Internet News Information Service License and the "News & Information" application category. To apply, see News App Quota and Frequency Permissions.) |
3× the number of valid users with notifications enabled |
5 messages |
|
Others |
2× the number of valid users with notifications enabled |
2 messages |
|
|
Test message |
For applications under review on the vivo platform, push permissions are "restricted." You can only send test messages to test devices via the API. You can add up to 20 test devices. Test messages are not subject to volume or frequency limits. |
||
-
Effective users with notifications enabled are users of a vivo channel-integrated app who have enabled the notification permission and whose device has connected to the internet within the past 14 days.
-
If the number of effective users with notifications enabled is less than 10,000, the operational message volume defaults to 10,000.
-
You can check the count of effective users with notifications enabled and the available operational message volume in the vivo push operations console.
-
The push quota is based on the delivery count. If the daily delivery count exceeds this quota, throttling is triggered.
Application publishing restrictions
If an application is not published on an app store, its push permission will be restricted. You cannot send production messages but can only send test messages to test devices.
When an application is published to a marketplace, it is granted production push permissions. It can send production messages and also send test messages to test devices.
Push time limit
To avoid disturbing users, vivo delivers operational messages only between 7:00 and 23:00. This time limit does not apply to system messages. If an operational message is sent outside this window, the server returns error code 10071 and does not deliver the message.
Push content limits
1. "Test" messages must be alphanumeric.
The interface has content restrictions to prevent developers from accidentally sending test messages to users during debugging.
Note: Test messages and production messages use the same rules. The term 'test' includes the Chinese word '测试' and the English word 'test'.
|
System message |
Operational message |
|
|
Subcategory: IM |
Subcategory: Not IM |
|
|
No content restrictions |
The following content will be blocked: Symbols only Symbols + numbers "test" + symbols "test" + numbers "test" + symbols + numbers JSON format |
The following content will be blocked: Numbers only Symbols only Symbols + numbers "test" + symbols "test" + numbers "test" + symbols + numbers JSON format (Note: "test" + Chinese text is allowed.) |
2. Repetitive operational message interception limit
The vivo platform rejects duplicate operational messages. Avoid sending the same copy to the same audience more than once within a calendar day.
Client-side deduplication: The client automatically discards duplicate operational messages received within the same calendar day. (This mechanism does not apply to system messages.)
Push rate limit
The vivo push QPS automatically adjusts based on the number of active users with notifications enabled, with a default range of 3,000/s to 5,000/s.
QPS defines the maximum number of users you can push to per second. For a single push, you can make up to 3,000 API calls per second. For a list-based push that targets 100 users per call, you can make up to 30 API calls per second.
|
Enabled users |
Push speed |
|
0–5,000,000 |
3,000 |
|
5,000,000–8,000,000 |
4,000 |
|
>8,000,000 |
5,000 |
Message classification
The Push Message Classification Description outlines two main message categories for vivo Push: system message and operational message. Unclassified messages default to operational messages and are subject to the rules for that category.
Message classification
Top-level category:
-
You do not need to apply for the system message and operational message categories. However, you must ensure your push content complies with vivo's definition of classified messages.
-
vivo routinely inspects messages and prohibits the sending of operational messages through the system message channel. If your push content is non-compliant with its category, you will face strict penalties. For more information, see vivo's operational supervision and penalties.
-
The default quota for system messages is three times the number of active users with notifications enabled. If this quota is insufficient, you can apply for unlimited system messages through the vivo Ticket System.
-
To apply for the unlimited system messages permission, you must first implement secondary message classification and provide the required information. The platform will evaluate your application based on this classification. For subscription and reminder messages, you must first apply for the system message archiving permission and then the unlimited system messages permission. For details, see the vivo push service ticket operation guide.
Subcategory:
-
If a secondary message category in the table below matches your app's push scenario, you can use it directly. If the message is a subscription message, you must use the ticketing system to apply for system message archiving. For details, see the vivo Push Service Ticketing Guide.
-
If there is no matching secondary message category for your app's push scenario in the table below, you must email the vivo team to apply for special classification parameters, which require approval before use.
|
Primary message category |
Primary category value |
Secondary message category |
Secondary category value |
Notification method |
|
System message |
AndroidNotificationVivoChannel: 0 |
instant message |
IM |
Heads-up notification, lock screen notification, ring, and vibrate |
|
account and assets |
ACCOUNT |
|||
|
schedule and to-do |
TODO |
|||
|
device information |
DEVICE_REMINDER |
|||
|
order and logistics |
ORDER |
|||
|
subscription reminder |
SUBSCRIPTION |
|||
|
Marketing message |
AndroidNotificationVivoChannel: 1 |
news |
NEWS |
Displays in the notification shade only. |
|
content recommendation |
CONTENT |
|||
|
marketing campaign |
MARKETING |
|||
|
social update |
SOCIAL |
Message classification
-
Prerequisites: Complete Android SDK integration and vivo channel integration.
-
Once your vivo message category application is approved, you can use the EMAS console and OpenAPI to push messages in these categories.
EMAS console push
To send a push notification from the EMAS console, go to Vendor Settings-Notification Channel and Notification Classification, select the vivo channel, and select the appropriate message type.

OpenAPI push
To call the advanced push API, pass the following parameters:
-
AndroidNotificationVivoChannel: The primary message category. Valid values are 0 (default) for marketing messages and 1 for system messages.
-
AndroidMessageVivoCategory: The secondary message category. Enter a value that complies with the message classification rules. It must be in uppercase.
We recommend setting only the AndroidMessageVivoCategory parameter and not the AndroidNotificationVivoChannel parameter.
If you also set the AndroidNotificationVivoChannel parameter, the value of AndroidMessageVivoCategory must correspond to it. Otherwise, the API call returns an error.
Other settings
Send a test message
1) To call the advanced push API, set the following parameters:
-
AndroidVivoPushMode = 1. Enables direct push. Each application can send up to 500 test messages per day that do not count toward the daily push limit.

-
AndroidTargetUserType = 1. This is equivalent to simultaneously setting the
AndroidHuaweiTargetUserType,AndroidHonorTargetUserType, andAndroidVivoPushModeparameters.

2) When using the EMAS console push service for push notifications, go to vendor settings and turn off production notifications for the vivo channel.

Meizu
Message classification
Meizu Push classifies messages into two categories: private message and public message. Unclassified messages are treated as public messages by default. For more information, refer to the Meizu Push message classification guidelines.
|
Type |
Description |
Limit |
|
private message |
|
Unlimited |
|
public message |
|
The daily push limit varies by application category. See the "Push limits - push notification quota" section for details. |
Push parameters
When pushing to Meizu using the PushV2 and MassPushV2 interfaces, the parameters are in PushTask.Notification.Android.Options.Meizu:
-
NoticeMsgType-
0: public message (default)
-
1: private message
-
To send a push notification using the Push API, use the following parameters:
-
AndroidMeizuNoticeMsgType-
0: Public message (default)
-
1: Private message
-
Push restrictions
For information about Meizu Push Service limitations, such as message volume and push rate, see Meizu Push Message Limit Description.
Push message limit
The daily push limit for public messages per device is as follows:
|
Secondary category |
Tertiary category |
Daily push limit (messages) |
|
news & reading |
news & information (requires an Internet News Information Service License) |
5 |
|
Categories such as e-book, magazine, audiobook, animation & comics, humor, sports, and classifieds without an Internet News Information Service License |
3 |
|
|
casual & puzzle strategy & simulation sports & racing card & board role-playing video & entertainment tools social & communication education photo & video lifestyle maps & navigation shopping business kids finance health & fitness |
All |
3 |
|
Others |
All |
3 |
To request an increase to your push quota, contact Meizu Push at push_support@dreamsmart.com.
Push rate and limits
-
Each service has a push rate limit, with a default of 10,000 devices per 10 seconds per app. A service can have a maximum of 100 subscription tags and is limited to 1,000 pushes per day.
-
The default limit for creating push tasks with the API is 10,000 per day.
-
If a device receives four or more push messages from the same service, the system collapses them. On devices running a system version earlier than Flyme 10, the system moves unclicked messages to the message box in the upper-right corner.
-
The system automatically unsubscribes a device after 30 days of inactivity.
Push limits
The Google channel does not differentiate between message types, but it does enforce limits on a per-application and per-device basis. The specific limits are as follows:
|
Per application |
1,500,000 messages per minute |
|
Per device |
1,000 messages per minute |
Channel limits
Google has deprecated the legacy Firebase Cloud Messaging API (formerly Google Cloud Messaging, or GCM). To send pushes through the Google channel, you must use the Firebase Cloud Messaging (FCM) HTTP v1 API. For integration instructions, see Google push channel integration.
If you still use the legacy GCM channel, your messages will be rejected. Upgrade immediately by following the Firebase channel upgrade guide.
HarmonyOS
Push limits
The HarmonyOS Push Management Rules classify notification messages into two categories: Service and Communication; News and Marketing, each with different receiving limits on the HarmonyOS channel:
|
Message type |
Total push limit |
User receive limit |
|
Service and Communication |
Unlimited |
A device cannot receive more than 3,000 messages in total per day from a single application. This total includes Service and Communication, Information and Marketing, and other scenario-based messages. |
|
Information and Marketing |
Unlimited |
News Category (requires an Internet News Information Service License): 5 messages Others: 2 messages |
Message classification
HarmonyOS manages notifications by category to improve the notification experience for end users.
Message classification
According to the HarmonyOS notification message classification standard, HarmonyOS classifies notification messages into Service and Communication and Information and Marketing. If you do not apply for a message category, your messages are automatically classified as Information and Marketing, which is subject to message push limits:
-
To apply for the message types that suit your business needs, follow the instructions in the Apply for self-classification privilege for notification messages on HarmonyOS document. You can apply for multiple types.
-
This table lists the current values for the
categoryparameter of the self-classification privilege for notification messages on the HarmonyOS channel and their corresponding notification methods:
|
Category |
Subcategory |
Type |
Value |
Notification method |
|
Service and communication |
Social communication |
IM |
IM |
This method uses lock screen alerts, ringtones, and vibration. |
|
VoIP |
VoIP |
|||
|
Service notification |
Subscription |
SUBSCRIPTION |
||
|
Travel |
TRAVEL |
|||
|
Health |
HEALTH |
|||
|
Work reminder |
WORK |
|||
|
Account activity |
ACCOUNT |
|||
|
Order and logistics |
EXPRESS |
|||
|
Finance |
FINANCE |
|||
|
Device reminder |
DEVICE_REMINDER |
|||
|
|
|
|||
|
Information and marketing |
Content and information |
Financial news |
MARKETING |
This method uses silent notifications that appear only in the notification shade. |
|
Lifestyle information |
||||
|
Survey |
||||
|
Other |
||||
|
Content recommendation |
||||
|
News |
||||
|
Social feed |
||||
|
Marketing campaign |
Feature recommendation |
|||
|
Promotional event |
||||
|
Product promotion |
Message classification
-
Prerequisites: You have completed the HarmonyOS SDK integration and set up a vendor-specific channel.
-
Once approved for HarmonyOS self-categorized messaging, you can use the EMAS console and OpenAPI to push categorized messages.
EMAS console push
To send push notifications to a HarmonyOS app using the Mobile Push service in the EMAS console, select the appropriate notification message category in HarmonyOS settings.

OpenAPI push
Pass the parameters when calling the advanced push API.
-
HarmonyCategory: The value for the category parameter of the Harmony channel.
Alibaba Cloud proprietary channel
For online devices, messages are delivered through the Alibaba Cloud channel. This behavior is controlled by the HarmonyOS notification channel through the SlotType parameter. The values and descriptions for this parameter are as follows:
|
Slot type |
Category |
Value |
Description |
|
SOCIAL_COMMUNICATION |
social communication |
1 |
Notifications are enabled. A notification icon appears in the status bar, with a banner and a notification sound. |
|
SERVICE_INFORMATION |
service information |
2 |
Notifications are enabled. A notification icon appears in the status bar, with a notification sound but no banner. |
|
CONTENT_INFORMATION |
content information |
3 |
Notifications are enabled, but do not include a notification icon in the status bar, a banner, or a notification sound. |
|
CUSTOMER_SERVICE |
customer service |
5 |
This channel is for user-initiated customer service messages between users and businesses. Notifications are enabled and a notification icon appears in the status bar, but there is no banner or notification sound. |
|
OTHER_TYPES |
other |
0xFFFF |
Notifications are enabled, but do not include a notification icon in the status bar, a banner, or a notification sound. |
-
Prerequisites: You have completed the HarmonyOS SDK integration.
-
Create a notification channel on the HarmonyOS client-side. For details, see HarmonyOS development steps.
-
After creating the notification channel, you can use the EMAS console or OpenAPI to push categorized messages:
-
Push from the EMAS console
-
When pushing from the EMAS console via the Alibaba Cloud online notification channel, select the corresponding notification channel type in HarmonyOS Settings.

-
-
Push using OpenAPI
-
When calling the advanced push API, pass the HarmonyNotificationSlotType parameter. This value maps to the SlotType value in the preceding table.
-
-
Other settings
Send test message
1) When calling the advanced push API, set HarmonyTestMessage to true. Each project can send up to 1,000 test messages.

2) When using the EMAS console push service to send a HarmonyOS app notification, go to HarmonyOS Settings and enable test messages.

More recommendations
Improve your notification delivery rate by adding features that prompt users to subscribe to and enable push notifications, and by applying for the vendor self-classification privilege.
-
Classify messages to prevent critical ones from consuming the quota for non-critical messages or being sorted into the wrong lists.
-
For non-critical messages, consider offering them as opt-in subscriptions.
-
Except for user re-engagement scenarios, reduce the sending volume to inactive users to avoid wasting resources on ineffective reach.
-
Send push notifications in moderation to avoid overwhelming users into disabling notification permissions.
Higher quotas with subscriptions
Sending excessive operational messages, such as marketing or informational content, quickly exhausts the daily per-device quota from vendor channels. By contrast, system messages, like service notifications or private messages, are typically exempt from these limits. To maximize delivery capacity per device, classify messages carefully, prioritize sending system messages, and conserve your operational message quota. We recommend implementing a user subscription model in your app to manage these quotas effectively. Each vendor channel has the following user subscription requirements:
|
Vendor |
Category name |
API parameter |
Description |
|
Huawei |
service and communication → service reminder → subscription |
|
Content a user actively subscribes to and agrees to receive via push messages. (Subscription is limited to the following scenarios; applications for other scenarios will be rejected.)
Note To apply for subscription messages, you must meet the following conditions and provide supporting screenshots:
|
|
Honor |
service and communication → service reminder → subscription |
|
Content the user subscribes to and reminders they set.
The push message content must identify it as a subscription message. For example, include text such as "Subscription message" or "You subscribed to..." in the message title or body. Note: Subscription is a user-initiated action. Do not send push messages to users who have not subscribed. |
|
Xiaomi |
private message → personal subscription |
|
Examples of user-initiated subscriptions include alerts for followed market trends, start reminders for followed streamers, updates from specially followed accounts or authors, and update reminders for paid subscription content. Note To apply for subscription messages, you must meet the following conditions and provide supporting evidence:
|
|
OPPO |
New message classification → personal subscription |
|
Reminders a user actively sets and agrees to receive. Examples include: user-set reminders for live stream starts and book updates; user-set alerts for product or flight price drops, and group-buy start reminders; alerts for followed market trends; user-set check-in reminders; and update reminders for paid subscription content. Note To apply for this message category, you must meet the following conditions and provide supporting evidence. Your application must support subscription and unsubscription, with UI text such as "Subscribe" or "Schedule." Subscription must be a user-initiated action; do not send push messages to users who have not subscribed. After a user subscribes, the application's UI must clearly state that they will receive subscription-related push messages, for example: "You will receive push messages for XX." The scope of subscription messages must be specific and not overly broad. For example, "subscribing to market news" is too broad and non-specific. |
|
Legacy private message → Content updates for user-followed topics |
|
Note:
|
|
|
vivo |
system message → subscription reminder |
|
Messages that a user actively subscribes to and expects to receive at a specific time:
Note To apply for subscription messages, you must meet the following conditions, provide supporting evidence, and complete system message archiving:
|
|
HarmonyOS |
service and communication → service reminder → subscription |
|
Content a user actively subscribes to and agrees to receive via push messages. (Subscription is limited to the following scenarios; applications for other scenarios will be rejected.)
Note To apply for subscription messages, you must meet the following conditions and provide supporting screenshots:
|
The requirements for each vendor channel can be summarized as follows:
-
Your app must require an active user opt-in for subscriptions and provide a clear way to unsubscribe. The subscription copy must explicitly state that users will receive push notifications, rather than using vague terms like "follow."
-
Subscription content must not be overly broad and must be organized into distinct categories.
-
Each push notification's copy must clearly relate to the user's specific subscription.
Prefer activity push to broadcast push
To control push costs and account for vendor channel limits on marketing messages, avoid sending pushes to a broad audience. Instead, tag each device with its activity level and send pushes to the corresponding tags. Consider the following solution:
-
When the app starts, query the device's tags to check if it has the current activity tag. A tag name can include year and month information, such as
tag202403. You can also tag devices by week. However, if you tag devices daily, be aware of the limit on the number of tags allowed in a tag expression. -
If the current activity tag is not present, add it to the device.
-
When you call the push API from your server, use a tag expression to target devices. For example:
TargetValue={"and": [{"tag": "tag202402"}, {"tag": "tag202403"}]}. -
To avoid an excessive number of tags, periodically remove expired ones. For example, you can run a monthly job to remove activity tags that are more than 24 months old.
Stale device deletion
Enable the receipt log to diagnose errors in sent_fail or arrive_fail logs and remove invalid devices to improve your OpenAPI call efficiency. For receipt error codes, refer to Partial error codes and causes for Mobile Push vendor channels.
