Common Parameters (OfflinePushInfo Description)
Push OfflinePushInfo Description
OfflinePushInfo is a JSON Object dedicated to notification bar push configuration, allowing you to configure whether to close the push, push title description, text description, push passthrough, and related parameters of push vendors.
Standard Notification Push
Marketing news push.
{// other parameters..."OfflinePushInfo": {"PushFlag": 0,"Title":"Offline Push Title""Desc": "offline push content""Ext": "{\"entity\":{\"key1\":\"value1\",\"key2\":\"value2\"}}", // passthrough field, push uses string in json format"AndroidInfo": {"Sound": "shake", // ringtone filename, without suffix"XiaoMiChannelID": "xiaomi_channel_id","OPPOChannelID": "oppo_channel_id","OPPOCategory": "MARKETING", // OPPO message categorization: content and marketing"VIVOCategory": "MARKETING", // VIVO message categorization: operational messages"HuaWeiCategory": "MARKETING", // Huawei message category: information marketing"HonorImportance": "LOW", // Honor message category: information marketing"MeiZuNoticeMsgType": 0 // Meizu Message category: information marketing},"ApnsInfo": {"Sound": "apns.mp3", // ringtone filename, with suffix"BadgeMode": 1,"Title":"apns title","SubTitle":"apns subtitle","Image":"www.image.com","MutableContent": 1}}}
Private message push.
{// other parameters..."OfflinePushInfo": {"PushFlag": 0,"Title":"Offline Push Title""Desc": "offline push content""Ext": "{\"entity\":{\"key1\":\"value1\",\"key2\":\"value2\"}}", // passthrough field, recommended string in json format"AndroidInfo": {"Sound": "shake", // ringtone filename, without suffix"XiaoMiChannelID": "xiaomi_channel_id","OPPOChannelID": "oppo_channel_id","VIVOCategory": "IM", // vivo message categorization: system message"HuaWeiCategory": "IM", // Huawei message category: service and communication"HonorImportance": "LOW", // Honor message category: service communication"MeiZuNoticeMsgType": 0 // Meizu Message category: private message"OPPOCategory": "IM", // OPPO message category: communication and service"OPPOPrivateMsgTemplateId": "xxxx", // OPPO private message template id"OPPOPrivateTitleParameters": { // OPPO private message title template parameters in json format"k1": "v1"...},"OPPOPrivateContentParameters": { // OPPO private message content template parameters in json format"k1": "v1",...},},"ApnsInfo": {... // For details, refer to the ApnsInfo field description}}}
APNs Passthrough Push
{// other parameters..."OfflinePushInfo": {"Ext": "{\"entity\":{\"key1\":\"value1\",\"key2\":\"value2\"}}" // passthrough field, push uses string in json format"ApnsInfo": {"ContentAvailable": 1 // APNs Transparent Push Feature},"AndroidInfo": {... // For details, see AndroidInfo field description}}}
APNs VoIP Push
{// other parameters..."OfflinePushInfo": {"Title":"Offline Push Title", // Fallback to ordinary Notification push Title when recipient's VoIP token is not reported"Desc": "Offline Push Content", // Fallback to ordinary Notification push Desc when recipient's VoIP token is not reported"Ext": "{\"entity\":{\"key1\":\"value1\",\"key2\":\"value2\"}}" // passthrough field, push uses string in json format"ApnsInfo": {"IsVoipPush": 1 // APNs VoIP Push},"AndroidInfo": {... // For details, see AndroidInfo field description}}}
APNs LiveActivity (Dynamic Island) Push
Update LiveActivity.
{// other parameters..."OfflinePushInfo": {"Title": "Offline Push Title","Desc": "Offline push content","Ext": "{\"entity\":{\"k1\":\"v1\",\"k2\":\"v2\"}}", // passthrough field, push uses string in json format"ApnsInfo": {"LiveActivity": {"LaId": "timpush","Event": "update", // Update LiveActivity push"ContentState": {"k1": v1,"k2": v2,...}}},"AndroidInfo": {... // For details, see AndroidInfo field description}}}
End LiveActivity.
{// other parameters..."OfflinePushInfo": {"Title": "Offline Push Title","Desc": "Offline push content","Ext": "{\"entity\":{\"k1\":\"v1\",\"k2\":\"v2\"}}", // passthrough field, push uses string in json format"ApnsInfo": {"LiveActivity": {"LaId": "timpush","Event": "end", // End LiveActivity push"ContentState": {"k1": v1,"k2": v2,...},"DismissalDate": 1739502750}},"AndroidInfo": {... // For details, see AndroidInfo field description}}}
Multilingual Push
{// other parameters..."OfflinePushInfo": {"PushFlag": 0,"Title":"Offline Push Title""Desc": "offline push content""MultiLanguageContent":[{"Language":"zh-hant","Title":"Offline Push Title""Desc":"offline push content"},{"Language":"en","Title":"Offline Push Notification Title","Desc":"Offline Push Notification Desc"}],"Ext": "{\"entity\":{\"key1\":\"value1\",\"key2\":\"value2\"}}", // passthrough field, push uses string in json format"AndroidInfo": {... // For details, refer to the AndroidInfo field description},"ApnsInfo": {... // For details, refer to the ApnsInfo field description}}}
OfflinePushInfo Field Description
Field | Type | Attribute | Description |
PushFlag | Integer | Optional | 0: push,1: no offline push. |
Title | String | Optional | Notification bar push title. |
Desc | String | Optional | Notification bar push title. |
MultiLanguageContent | Array | Optional | Multilingual push content. The backend matches the push content based on the terminal's system language. If no match is found, the default Title and Desc are used. The feature requires SDK version 8.5.6870 or higher. Example code please see Multilingual Push. |
Language | String | Optional | |
Ext | String | Optional | Offline Push Passthrough Content. Since domestic Android phone manufacturers have different requirements for push platforms, ensure this field is in JSON format, otherwise it may cause failed delivery for specific manufacturers' offline push. |
AndroidInfo | Object | Optional | |
ApnsInfo | Object | Optional | |
HarmonyInfo | Object | Optional | |
BadgeAddNum | Integer | Optional | Sets the increment value for the badge number, adding to the current badge count. APNs Push: Value range: [1-99]. If both BadgeAddNum and BadgeSetNum are present, BadgeSetNum takes precedence. If neither is set, refer to ApnsInfo.BadgeMode. Huawei/Honor/Harmony Push: Value range: [1-99]. If both BadgeAddNum and BadgeSetNum are present, BadgeSetNum takes precedence. If neither is set, the badge number increments by 1. For other push vendors: This field has no effect. |
BadgeSetNum | Integer | Optional | Set badge number. For APNs push, the value range is [0~999]. For Huawei/Honor/HarmonyOS push, the value range is [0~99]. For other push vendors, this field will not take effect. In other cases, refer to BadgeAddNum for badge accumulation. |
AndroidInfo Field Description
Field | Type | Attribute | Description |
Sound | String | Optional | Android system notification ringtone filename, without suffix. For example, setting it to "shake" refers to the local file "/res/raw/shake.xxx" in the corresponding application. |
PushStyle | Integer | Optional | Android notification bar style. "0" represents the default style, "1" represents the large text style. If left blank, it defaults to 0. Only applicable to Huawei, Honor, and OPPO. |
XiaoMiChannelID | String | Optional | Mi Push notification category (Channel) adaptation fields for MIUI 10 or higher. When this field is not empty, it overwrites the ChannelID value in the console push certificate configuration. |
OPPOChannelID | String | Optional | OPPO Push notification channel adaptation fields for Android 8.0 or higher. When this field is not empty, it overwrites the ChannelID value in the console push certificate configuration. |
OPPOCategory | String | Optional | OPPO push message categorization, used to identify message type. For details, see category description. When this field is not empty, it overwrites the category value in the console push certificate configuration. |
OPPOPrivateMsgTemplateId | String | Optional | OPPO push private message template id, must carry when delivering the corresponding private message template. If OPPOCategory is set to content and marketing, this field is invalid. For details, see "OPUSH Private Message Template Verification". |
OPPOPrivateTitleParameters | JSON Object | Optional | OPPO push private message template title parameters. Title template example is: welcome to ${city}$, ${city}$ welcomes you. The parameter content is: {"city":"Beijing"} |
OPPOPrivateContentParameters | JSON Object | Optional | OPPO push private message template content parameters. Content template example is: {"userName":"Tom", "city":"Shenzhen city"} |
OPPONotifyLevel | Integer | Optional | OPPO push notification bar message reminder level value definition. For details, see notify_level description. 1: Notification bar 2: Notification bar + lock screen 16: Notification bar + lock screen + banner + vibration + ringtone When using OPPONotifyLevel, OPPOCategory is required. |
VIVOClassification | Integer | Optional | vivo push message categorization: "0" represents operational messages, "1" represents system messages. Default is 1 if left blank. (vivo push service optimized message classification rules on April 3, 2023. Recommended to use AndroidInfo. VIVOCategory to set message type.) |
VIVOCategory | String | Optional | vivo push message categorization, used to identify message type. For details, see category description. When this field is not empty, it overwrites the category value in the console push certificate configuration. |
VIVONotifyType | String | Optional | Notification Type 1: None, 2: Ring, 3: Vibrate, 4: Ring and Vibrate. Default setting is 4, see notifyType. |
HuaWeiImportance | String | Optional | Huawei push messaging reminder level, value is LOW, NORMAL. |
HuaWeiCategory | String | Optional | Huawei push message classification, used to identify message type. For details, see category description. When this field is not empty, it overwrites the category value in the console push certificate configuration. |
HuaWeiImage | String | Optional | Small icon URL for Huawei push notifications in the notification bar. The URL must use HTTPS protocol. Example: https://example.com/image.png. The image file must be less than 512KB, with a recommended size of 40dp x 40dp and a corner radius of 8dp. Images exceeding the recommended size may be compressed or not fully displayed. Recommended image formats are JPG, JPEG, or PNG. |
HonorImage | String | Optional | Icon URL for Honor push notifications in the notification bar. The URL must use HTTPS protocol. Example: https://example.com/image.png. The icon must be less than 512KB, with a recommended size of 40dp x 40dp and a corner radius of 8dp. Icons exceeding the recommended size may be compressed or not fully displayed. |
HuaWeiChannelID | String | Optional | Huawei Push notification channel field for EMUI 10.0 or higher. When this field is not empty, it overwrites the ChannelID value in the console push certificate configuration. |
HonorImportance | String | Optional | Categorization for Honor push messages, with values LOW or NORMAL. For details, refer to Honor Message Categorization. |
GoogleImage | String | Optional | Icon URL for Google push notifications in the notification bar. The image resource must not exceed 1MB, supporting JPG, JPEG, or PNG formats. Example: https://example.com/image.png. |
GooglePriority | String | Optional | normal: When the device is in the foreground, messages are delivered immediately. When the device is in the background or Doze mode, messages are delivered in batches with a delay. high: Regardless of the device's state (background/Doze/foreground), messages wake up the device and are delivered immediately. |
GoogleChannelID | String | Optional | Google Push notification channel fields for Android 8.0 or higher. |
MeiZuNoticeMsgType | Integer | Optional | Categorization for Meizu push messages. "0" represents an official message, "1" represents a private message. For details, see Meizu Message Classification Description. If this field is not empty, it overrides the message categorization in the console's Meizu Push certificate configuration. |
ApnsInfo Field Description
Field | Type | Attribute | Description |
BadgeMode | Integer | Optional | 0 means counting is required, 1 means this message does not count, and the upper right corner icon number does not increase. Note: The default value is 0 in Chat scenarios and 1 in non-Chat scenarios (such as calling the single push API). |
Title | String | Optional | This field is used to specify the title of APNs push. If filled, it will overwrite the top-level Title. |
SubTitle | String | Optional | This field is used to specify the subtitle of APNs push. |
Image | String | Optional | This field is used to specify the image address carried by APNs. When the client receives this field, the image can be displayed in the popup by downloading the image resource. |
MutableContent | Integer | Optional | Set to 1 to enable push extension for iOS 10+. Default is 0. |
Sound | String | Optional | iOS system notification ringtone filename, with suffix. Custom ringtone length cannot exceed 30s. The audio file must be added to the Xcode project first. Example value: shake.mp3. |
InterruptionLevel | String | Optional | The notification level for iOS 15+ push notifications can only be one of active, critical, passive, or time-sensitive. For details, please refer to: APNs InterruptionLevel description. |
ContentAvailable | Integer | Optional | 1 indicates a silent push for iOS, with no popup in the notification banner. Apple recommends sending no more than 3 silent messages per hour. For details, please refer to: APNs Background Notification. |
IsVoipPush | Integer | Optional | 1 indicates a VoIP push for iOS. If the recipient does not provide a VoIP token, it will be automatically downgraded to a regular APNs notification push. |
LiveActivity | Object | Optional |
Harmony Field Description
Field | Type | Attribute | Description |
Title | String | Optional | This field is used to identify the title of Harmony push. If filled, it will overwrite the top-level Title. |
Category | String | Optional | HarmonyOS push message categorization, used to identify message type. For details, see category description. When not empty, this field will overwrite the category value in the console Push Certificate configuration. |
Image | String | Optional | Notification Large Icon URL. The URL must use the HTTPS protocol. |
Sound | String | Optional | Custom message notification sound. The ringtone file set here must be placed in the /resources/rawfile path of the application. For example, setting it to "alert.mp3" corresponds to the local /resources/rawfile/alert.mp3 file in the application. Supported file formats include MP3, WAV, MPEG. If not set, the default system ringtone is used. When the request does not carry the SoundDuration field, it is recommended that the ringtone duration cannot exceed 30 seconds. If it exceeds 30 seconds, truncate it. When the request carries the SoundDuration field, for details, see the SoundDuration field description. Note: Wearable, TV, PC/2in1 do not support customizable ringtone |
SoundDuration | Integer | Optional | Custom message notification ringtone duration. Need to be used with the Sound field, effective only when the request carries both the Sound field and the SoundDuration field. Support numbers only, in seconds, in the range of [1,60]. The custom message notification ringtone passed in the Sound field will play until the SoundDuration field value is reached. If the duration of the custom message notification ringtone is insufficient, it will loop playback and stop when the SoundDuration field value is reached. |
LiveActivity Field Description
Field | Type | Attribute | Description |
LaId | string | Required | The real-time activity identifier that needs to be pushed, corresponding to the client activityID, with a length not exceeding 64 bytes. For details, refer to implementing LiveActivity (Dynamic Island) feature. |
Event | string | Required | For update, enter update; for end, enter end. |
ContentState | Object | Required | A custom key-value object. Must match the client SDK value. Corresponding to the official APNs document: Starting and updating Live Activities with ActivityKit push notifications | Apple Developer Documentation |
DismissalDate | Integer | Optional. | When the Event is "end", the Unix time shown for the real-time activity completion on the lock screen. If left blank, it defaults to the current time, and the lock screen will end soon. |
Note:
Since APNs push restrictions limit packet size to 4K, exclude other control fields and keep the sum of Desc and Ext fields under 3K.
If offline push is needed, strongly recommend the sender to specify OfflinePushInfo.Title and OfflinePushInfo.Desc. For C2C/group messages, if OfflinePushInfo.Title and OfflinePushInfo.Desc are not filled in, the fallback logic will attempt to convert and retrieve Title and Desc from MsgBody for offline push.