Message Formats
MsgBody
Message content is entered in the fields of MsgBody. Tencent Cloud Chat supports multiple message elements in one message, for example, a message can contain both text and emojis. Therefore, MsgBody is defined as an array that can include as many message elements as needed. The name for a message element is TIMMsgElement. For examples of the TIMMsgElements that constitute the MsgBody, see MsgBody Message Content Examples.
The format of TIMMsgElement is defined as follows:
{"MsgType": "","MsgContent": {}}
Field | Type | Description |
MsgType | String | The type of the message element. Currently, these message objects are supported: TIMTextElem (text message), TIMLocationElem (location message), TIMFaceElem (emoji message), TIMCustomElem (custom message), TIMSoundElem (audio message), TIMImageElem (image message), TIMFileElem (file message), and TIMVideoFileElem (video message). |
MsgContent | Object | The content of the message element. Each MsgType has its own MsgContent format. For more information, see below. |
The following table lists the message types (MsgType) that are currently supported:
Value of MsgType | Type |
TIMTextElem | Text |
TIMLocationElem | Geographic location |
TIMFaceElem | Emoji |
TIMCustomElem | Custom. When the receiver is an iOS device and the app is working in the background, this type of message provides fields other than text to APNs. A combined message can contain only one TIMCustomElem custom message element. |
TIMSoundElem | Voice |
TIMImageElem | Image |
TIMFileElem | File |
TIMVideoFileElem | Video |
Caution
Messages of the above types can be sent by server-side integrated RESTful APIs.
TIMMsgElement
Text message element
{"MsgType": "TIMTextElem","MsgContent": {"Text": "hello world"}}
Field | Type | Description |
Text | String | Content of the message. When the receiver is an iOS or Android device and the app is working in the background, messages of this type are displayed as offline push text. |
When the receiver is an iOS or Android device and the app is working in the background, the
Text
field in the JSON request packet is displayed as offline push text.Location message element
{"MsgType": "TIMLocationElem","MsgContent": {"Desc": "someinfo","Latitude": 29.340656774469956,"Longitude": 116.77497920478824}}
Field | Type | Description |
Desc | String | Description of the location |
Latitude | Number | Latitude |
Longitude | Number | Longitude |
When the receiver is an iOS or Android device and the app is working in the background, the offline push text is [Location] for the English version.
Emoji message element
{"MsgType": "TIMFaceElem","MsgContent": {"Index": 1,"Data": "content"}}
Field | Type | Description |
Index | Number | Emoji index customized by users |
Data | String | Additional data |
When the receiver is an iOS or Android device and the app is working in the background, the offline push text is [Face] for the English version.
description
When a message contains only one
TIMCustomElem
custom message element, if both the Desc
and OfflinePushInfo.Desc
fields are not entered, the offline push of the message will not be received, unless the OfflinePushInfo.Desc
field is entered.Custom message element
{"MsgType": "TIMCustomElem","MsgContent": {"Data": "message","Desc": "notification","Ext": "url","Sound": "dingdong.aiff"}}
Field | Type | Description |
Data | String | Custom message data. This field is not delivered as a payload field by APNs, and therefore the data field cannot be obtained in payload. |
Desc | String | Custom message description. When the receiver is an iOS or Android device, and the app is working in the background, the offline push text is displayed.If a custom message is sent with the OfflinePushInfo.Desc field set, the field will be overwritten; therefore, please enter the OfflinePushInfo.Desc field first. Note: When a message contains only one TIMCustomElem custom message element, if both the Desc and OfflinePushInfo.Desc
fields are not entered, the offline push of the message will not be received, unless the OfflinePushInfo.Desc field is entered. |
Ext | String | Extended field. When the receiver is an iOS or Android device and the app is working in the background, this field is delivered as an Ext key value in APNs request packet payloads. The protocol format of Ext is defined by the business end, the APNs is only responsible for passthrough. |
Sound | String | Custom APNs push ringtone |
When the receiver is an iOS or Android device and the app is working in the background, the
Desc
field is delivered as push text, the Ext
field is delivered as an Ext
key value in APNs request packet payloads, and the Data
field is not delivered as a payload field by APNs. Note that a combined message can contain only one TIMCustomElem custom message element.Voice message element
Caution
To send a voice message through the server-side RESTful API, you need to enter the
Url
, UUID
, and Download_Flag
fields. Make sure that the voice can be downloaded via the Url
and the UUID
is a globally unique string value, usually the MD5 value of the voice file. The message recipient can obtain the specified UUID
through V2TIMSoundElem.getUUID()
and the app can use the UUID
to identify the voice. Download_Flag
must be set to 2
.4.X or later versions of Chat SDK (for Android, iOS, macOS, and Windows) send voice message elements in the following format:
{"MsgType": "TIMSoundElem","MsgContent": {"Url": "https://1234-5678187359-1253735226.cos.ap-shanghai.myqcloud.com/abc123/c9be9d32c05bfb77b3edafa4312c6c7d","UUID": "1053D4B3D61040894AC3DE44CDF28B3EC7EB7C0F","Size": 62351,"Second": 1,"Download_Flag": 2}}
Field | Type | Description |
Url | String | Voice download URL, through which the voice content can be downloaded directly. |
UUID | String | Unique identifier of the voice, key value used by the client to index the voice |
Size | Number | Voice data size, in bytes. |
Second | Number | Voice duration, in seconds. |
Download_Flag | Number | Flag of the voice download method. Currently, the value of Download_Flag must be 2 , which means that the voice content can be downloaded from the URL specified by the Url field. |
Note
2.X and 3.X versions of Chat SDK (for Android, iOS, macOS, and Windows) send voice message elements in the following format:
{"MsgType": "TIMSoundElem","MsgContent": {"UUID": "305c0201", //Unique identifier of the voice in String type. This is the key value the client uses to index the voice. The voice cannot be downloaded through this field. To obtain the voice, upgrade the Chat SDK to version 4.X."Size": 62351, //Voice data size in bytes, in Number type."Second": 1 //Voice duration in seconds, in Number type.}}
Image message element
Caution
To send an image message through the server-side RESTful API, you need to enter the
URL
, UUID
, Width
, and Height
fields. Make sure that the image can be downloaded via the URL
so that you can obtain the basic image information and process the image. Width
and Height
are the width and height (unit: pixels) of the image. UUID
must be set to a globally unique string value, usually the MD5 value of the image. The message recipient can obtain the V2TIMImage
object by calling V2TIMImageElem.getImageList()
and then get the specified UUID
by calling V2TIMImage.getUUID()
. The app can use the UUID
to identify the image.{"MsgType": "TIMImageElem","MsgContent": {"UUID": "1853095_D61040894AC3DE44CDFFFB3EC7EB720F","ImageFormat": 1,"ImageInfoArray": [{"Type": 1, //Original image"Size": 1853095,"Width": 2448,"Height": 3264,"URL": "http://xxx/3200490432214177468_144115198371610486_D61040894AC3DE44CDFFFB3EC7EB720F/0"},{"Type": 2, //Large image"Size": 2565240,"Width": 0,"Height": 0,"URL": "http://xxx/3200490432214177468_144115198371610486_D61040894AC3DE44CDFFFB3EC7EB720F/720"},{"Type": 3, //Thumbnail"Size": 12535,"Width": 0,"Height": 0,"URL": "http://xxx/3200490432214177468_144115198371610486_D61040894AC3DE44CDFFFB3EC7EB720F/198"}]}}
Field | Type | Description |
UUID | String | Unique identifier of the image, key value used by the client to index the image |
ImageFormat | Number | Image format. JPG = 1, GIF = 2, PNG = 3, BMP = 4, Others = 255. |
ImageInfoArray | Array | Download information of the original image, thumbnail, or large image. |
Type | Number | Image type. 1: original image, 2: large image, 3: thumbnail. |
Size | Number | Size of image data in bytes. |
Width | Number | Image width in pixels |
Height | Number | Image height in pixels |
URL | String | Download URL of the image. |
File message element
Caution
To send a file message through the server-side RESTful API, you need to enter the
Url
, UUID
, and Download_Flag
fields. Make sure that the file can be downloaded via the Url
and the UUID
is a globally unique string value, usually the MD5 value of the file. The message recipient can obtain the specified UUID
by calling V2TIMFileElem.getUUID()
and the app can use the UUID
to identify the file. Download_Flag
must be set to 2
.4.X or later versions of Chat SDK (for Android, iOS, macOS, and Windows) send file message elements in the following format:
{"MsgType": "TIMFileElem","MsgContent": {"Url": "https://7492-5678539059-1253735326.cos.ap-shanghai.myqcloud.com/abc123/49be9d32c0fbfba7b31dafa4312c6c7d","UUID": "1053D4B3D61040894AC3DE44CDF28B3EC7EB7C0F","FileSize": 1773552,"FileName": "file:///private/var/Application/tmp/trim.B75D5F9B-1426-4913-8845-90DD46797FCD.MOV","Download_Flag": 2}}
Field | Type | Description |
Url | String | Download URL of the file, through which the file can be downloaded directly. |
UUID | String | Unique identifier of the file, key value used by the client to index the file |
FileSize | Number | Size of file data in bytes. |
fileName | String | File name. |
Download_Flag | Number | Flag of the file download method. Currently, the value of Download_Flag must be 2, which means that the file can be downloaded from the URL specified by the Url field. |
Note
2.X and 3.X versions of Chat SDK (for Android, iOS, macOS, and Windows) send file message elements in the following format:
{"MsgType": "TIMFileElem","MsgContent": {"UUID": "305c02010", //Unique identifier of the file in String type. This is the key value the client uses to index the file. The file cannot be downloaded through this field. To obtain the file, upgrade the Chat SDK to version 4.X."FileSize": 1773552, //The size of file data in bytes, in Number type."FileName": "file:///private/var/Application/tmp/trim.B75D5F9B-1426-4913-8845-90DD46797FCD.MOV" //The file name in String type.}}
Video message element
Caution:
To send a video message through the server-side RESTful API, you need to enter the
VideoUrl
, VideoUUID
, ThumbUrl
, ThumbUUID
, ThumbWidth
, ThumbHeight
, VideoDownloadFlag
, and ThumbDownloadFlag
fields. Make sure that the video and video thumbnail can be downloaded via the VideoUrl
and ThumbUrl
respectively. VideoUUID
and ThumbUUID
must be globally unique string values, usually the MD5 values of the video and video thumbnail. The message recipient can obtain the specified VideoUUID
and ThumbUUID
by calling V2TIMVideoElem.getVideoUUID()
and V2TIMVideoElem.getSnapshotUUID()
respectively. The app can use the VideoUUID
to identify the video. VideoDownloadFlag
and ThumbDownloadFlag
must be set to 2
.4.X or later versions of Chat SDK (for Android, iOS, macOS, and Windows) send video message elements in the following format:
{"MsgType": "TIMVideoFileElem","MsgContent": {"VideoUrl": "https://0345-1400187352-1256635546.cos.ap-shanghai.myqcloud.com/abcd/f7c6ad3c50af7d83e23efe0a208b90c9","VideoUUID": "5da38ba89d6521011e1f6f3fd6692e35","VideoSize": 1194603,"VideoSecond": 5,"VideoFormat": "mp4","VideoDownloadFlag":2,"ThumbUrl": "https://0345-1400187352-1256635546.cos.ap-shanghai.myqcloud.com/abcd/a6c170c9c599280cb06e0523d7a1f37b","ThumbUUID": "6edaffedef5150684510cf97957b7bc8","ThumbSize": 13907,"ThumbWidth": 720,"ThumbHeight": 1280,"ThumbFormat": "JPG","ThumbDownloadFlag":2}}
Field | Type | Description |
VideoUrl | String | Download URL of the video, through which the video can be downloaded directly. |
VideoUUID | String | Unique identifier of the video, key value used by the client to index the video. |
VideoSize | Number | Size of video data, in bytes. |
VideoSecond | Number | Video duration, in seconds. For web clients, this field cannot be obtained and the value 0 is used. |
VideoFormat | String | Video format, for example, MP4. |
VideoDownloadFlag | Number | Flag of the video download method. Currently, the value of VideoDownloadFlag must be 2, which means that the video can be downloaded from the URL specified by the VideoUrl field. |
ThumbUrl | String | Download URL of the video thumbnail, through which the video thumbnail can be downloaded directly. |
ThumbUUID | String | Unique identifier of the video thumbnail, key value used by the client to index the video thumbnail |
ThumbSize | Number | Size of thumbnail data, in bytes. |
ThumbWidth | Number | Thumbnail width in pixels |
ThumbHeight | Number | Thumbnail height in pixels |
ThumbFormat | String | Video thumbnail format, such as JPG or BMP. |
ThumbDownloadFlag | Number | Flag of the video thumbnail download method. Currently, the value of ThumbDownloadFlag must be 2, which means that the video thumbnail can be downloaded from the URL specified by the ThumbUrl field. |
Note:
2.X and 3.X versions of Chat SDK (for Android, iOS, macOS, and Windows) send video message elements in the following format:
{"MsgType": "TIMVideoFileElem","MsgContent": {"VideoUUID": "1400123456_dramon_34ca36be7dd214dc50a49238ef80a6b5",//Unique identifier of the video in String type. This is the key value the client uses to index the video. The video cannot be downloaded through this field. To obtain the video, upgrade the Chat SDK to version 4.X."VideoSize": 1194603, //Size of video data in bytes, in Number type."VideoSecond": 5, //Video duration in seconds, in Number type."VideoFormat": "mp4", //Video format in String type, for example, MP4."ThumbUUID": "1400123456_dramon_893f5a7a4872676ae142c08acd49c18a",//Unique identifier of the video thumbnail in String type. This is the key value the client uses to index the video thumbnail. The video thumbnail cannot be downloaded through this field. To obtain the video thumbnail, upgrade the Chat SDK to version 4.X."ThumbSize": 13907, //Size of thumbnail data in bytes, in Number type."ThumbWidth": 720, //Thumbnail width in Number type."ThumbHeight": 1280, //Thumbnail height in Number type."ThumbFormat": "JPG" //Video thumbnail format in String type, such as JPG or BMP.}}
Elements of a combined message
Caution
Only native SDK 5.2.210 or later and web SDK 2.10.1 or later support the sending and receiving of combined messages.
{"MsgType": "TIMRelayElem","MsgContent": {"Title": "Group chat history","MsgNum": 2,"CompatibleText": "The SDK version does not support combined messages. Please upgrade to the latest version.","AbstractList": ["A: What do you think of this?","B: I think it's great."],"MsgList": [{"From_Account": "A","GroupId": "group1","MsgSeq": 85,"MsgRandom": 3998651049,"MsgTimeStamp": 1664437702,"MsgBody": [{"MsgContent": {"Text": " What do you think of this?"},"MsgType": "TIMTextElem"}]},{"From_Account": "B","GroupId": "group1","MsgSeq": 86,"MsgRandom": 965790,"MsgTimeStamp": 1664437703,"MsgBody": [{"MsgContent": {"Text": "I think it's great."},"MsgType": "TIMTextElem"}]}]}}
Field | Type | Description |
Title | String | Title of the combined message. |
MsgNum | Integer | Number of messages combined/forwarded. |
CompatibleText | String | Compatible text. When an SDK of an earlier version that does not support combined messages receives a combined message, the Chat backend converts the message into compatible text and delivers it. |
AbstractList | Array | Digest list of a combined message, in string array format. |
MsgList | Array | Message list. This field is available only when the total length of the combined messages is less than or equal to 12 KB, in which case the JsonMsgKey field is unavailable. |
JsonMsgKey | String | Key of the combined message list. This field is available only when the total length of the combined messages is greater than 12 KB, in which case the MsgList field is unavailable. |
The structure of each message in
MsgList
is as follows:Field | Type | Description |
From_Account | String | UserID of the message sender. This field is available when the combined message is a one-to-one or group message. |
To_Account | String | UserID of the message recipient. This field is available only when the combined message is a one-to-one message. |
GroupId | String | Group ID. This field is available only when the combined message is a group message. |
MsgSeq | Integer | Sequence number of the message (a 32-bit unsigned integer). |
MsgRandom | Integer | Random number of the message (a 32-bit unsigned integer). |
MsgTimeStamp | Integer | Message timestamp, in seconds. |
MsgBody | Array | Message body. For details on formats, see Message Formats. (Note: a message can contain multiple message elements, in which case MsgBody is an array.) |
CloudCustomData | String | Custom message data. It is saved in the cloud and will be sent to the peer end. Such data can be pulled after the app is uninstalled and reinstalled. |
MsgBody Examples
Single text element message
A single message contains only one text message element. The text content is hello world.
{"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hello world"}}]}
Combined messages
The following single message contains two text message elements and one emoji message element, in the sequence of text + emoji + text.
{"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hello"}},{"MsgType": "TIMFaceElem","MsgContent": {"Index": 1,"Data": "content"}},{"MsgType": "TIMTextElem","MsgContent": {"Text": "world"}}]}
Caution
A combined message can contain only one
TIMCustomElem
custom message element, and an unlimited number of other message elements.Description of Custom Message Data CloudCustomData
Each message can carry custom data
CloudCustomData
.CloudCustomData
is saved in the cloud together with the MsgBody
of the message. It will be sent to the opposite end and can still be pulled after the program is uninstalled and reinstalled.The following example shows the formats of
CloudCustomData
and MsgBody
:{"MsgBody": [{"MsgType": "TIMTextElem","MsgContent": {"Text": "hello"}}],"CloudCustomData": "your cloud custom data"}
OfflinePushInfo
OfflinePushInfo
is a JSON Object dedicated to offline push configuration. It allows you to disable push for the message, describe push text content, and configure pass-through strings. Using OfflinePushInfo
, you can easily set offline push messages without the need to encapsulate via TIMCustomElem
.Note: It is recommended to set offline push via OfflinePushInfo. If the corresponding field in OfflinePushInfo is filled, the offline push-related configuration in TIMCustomElem will be ignored.
Ordinary Notification Push
{// ..."MsgBody": [...] // Message body related description here"OfflinePushInfo": {"PushFlag": 0,"Title": "This is the push title","Desc": "This is offline push content","Ext": "{\"entity\":{\"key1\":\"value1\",\"key2\":\"value2\"}}", // Pass-through field, push uses JSON format string"AndroidInfo": {"Sound": "shake", // Ringtone file name without suffix"XiaoMiChannelID": "xiaomi_channel_id","OPPOChannelID": "OPPO_channel_id","OPPOCategory": "MARKETING", // OPPO message category"VIVOCategory": "MARKETING", // VIVO message category"HuaWeiCategory": "MARKETING", // Huawei message category"HonorImportance": "LOW", // Honor message category"MeiZuNoticeMsgType": 0 // Meizu Message category},"ApnsInfo": {"Sound": "apns.mp3", // Ringtone file name with suffix"BadgeMode": 1,"Title":"apns title","SubTitle":"apns subtitle","Image":"www.image.com","MutableContent": 1}}}
APNS Transparent Push Feature
{// ..."MsgBody": [...] // Description related to MsgBody here"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
{// ..."MsgBody": [...] // Description related to MsgBody here"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
{"MsgBody": [...] // Description related to MsgBody here"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}}}
{"MsgBody": [...] // Description related to MsgBody here"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}}}
OfflinePushInfo Field Description
Field | Type | Attribute | Description |
PushFlag | Integer | Optional | 0: means push 1: means no offline push |
Title | String | Optional | Offline Push Title. This field is shared by iOS and Android. |
Desc | String | Optional | Offline push content. This field will overwrite the display text of various message elements TIMMsgElement in offline push. If the message sent contains only one TIMCustomElem custom message element, this Desc field will override the Desc field in TIMCustomElem. If neither Desc field is filled, the custom message will fail to be delivered in offline push. |
Ext | String | Optional | Offline Push Transparent 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 |
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. By default if left blank, it is set to 0. Only applicable to Huawei/honor/OPPO take effect. |
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. |
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. |
GoogleChannelID | String | Optional | Google Push notification channel fields for Android 8.0 or higher. |
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. |
OPPONotifyLevel | Integer | Optional | OPPO push notification bar message reminder level value definition. For details, see notify_level description. notification column 2: Notification column + lock screen 16: Notification column + 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. |
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 | Huawei push notification bar message small icon URL on the right. The URL must use the HTTPS protocol. Example value: https://example.com/image.png . The image file must be less than 512KB, with a recommended specification of 40dp x 40dp and a corner radius of 8dp. Images exceeding the recommended specifications may be compressed or not fully displayed. Recommend using JPG/JPEG/PNG image formats. |
HonorImage | String | Optional | Honor push notification bar message small icon URL on the right. The URL must use the HTTPS protocol. Example value: https://example.com/image.png . The icon file 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. |
HonorImportance | String | Optional | Honor push message categorization, value is LOW, NORMAL. For details, see Honor Message Categorization. |
GoogleImage | String | Optional | Google push notification bar message right-side icon URL. Image resource no more than 1M, supports JPG/JPEG/PNG format. Example value: https://example.com/image.png . |
MeiZuNoticeMsgType | Integer | Optional | Meizu push message categorization. "0" represents Public Trust Message, "1" represents private message. For details, see Meizu Message Classification Description. When this field is not empty, it overwrites the message categorization in the console 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 IM scenarios. In non-IM scenarios (for example, REST API calls to the timpush/batch API), the default value is 1. |
Title | String | Optional | This field is used to identify the title of APNs push. If filled, it will overwrite the top-level Title. |
SubTitle | String | Optional | This field is used to identify the subtitle of APNs push. |
Image | String | Optional | This field is used to identify the image address carried by APNs. When the client gets this field, the image can be displayed in the popup via 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 voice file must be linked into 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 column. Apple recommends sending no more than 3 silent messages per hour. For details, please refer to: APNS Background Notification. |
IsVoipPush | Integer | Optional | 1 means yes for IOS VoIP Push. For details, please see: VoIP Push. If the recipient does not report a VoIP token, we will automatically downgrade to ordinary Apns Notification Push. |
LiveActivity | Object | Optional |
LiveActivity Field Description
Field | Type | Attribute | Description |
LaId | string | Required | The real-time activity flag that needs to be pushed corresponds to the client activityID, with a length not exceeding 64 bytes. For details, refer to implementing LiveActivity (Dynamic Island) feature. |
Event | string | Required | Update: "update", end: "end". |
ContentState | Object | Required | 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 one-to-one/group chat 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.