# App消息发布（废弃）
#### 功能介绍
将消息直发给endpoint设备。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=SMN&api=PublishAppMessage)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v2/{project_id}/notifications/endpoints/{endpoint_urn}/publish
表1路径参数 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                                          |
|:---|:---|:---|:---|
| project_id     | 是    | String  | 项目ID。 获取项目ID请参考 [获取项目ID](https://support.huaweicloud.com/api-smn/smn_api_66000.html)。   |
| endpoint_urn | 是   | String | Endpoint的唯一资源标识，可通过[查询Application的Endpoint列表](https://support.huaweicloud.com/api-smn/ListApplicationEndpoints_0.html)获取该标识 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型  | 描述                                                                                              |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。 通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
   
表3请求Body参数 
| 参数                  | 是否必选 | 参数类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| message              | 否 | String | message与message_structure二者选其一。 message, App消息发布。 message_structure, 使用消息结构体方式的App消息发布。 app推送的消息内容，当前支持的推送平台有HMS、APNS、APNS_SANDBOX。 HMS是为开发者提供的消息推送平台。 APNS和APNS_SANDBOX是用于推送iOS消息的服务平台。 HMS平台指定的消息内容不超过2K。 APNS和APNS_SANDBOX平台的消息内容不能超过4K。 推送平台的消息内容格式要求详情见application消息体格式。 华为透传消息 { "hps": { "msg": { "type": 1, "body": { "key": "value" } } } } 华为系统通知栏消息 { "hps": { "msg": { "type": 3, "body": { "content": "Push message content", "title": "Push message content" }, "action": { "type": 1, "param": { "intent": "#Intent;compo=com.rvr/.Activity;S.W=U;end" } } }, "ext": { "biTag": "Trump", "icon": "http://upload.w.org/00/150pxsvg.png" } } } 苹果平台消息格式 { "aps": { "alert": "hello world" } } |
| message_structure | 否   | String  | app推送的消息内容，当前支持的推送平台有HMS、APNS、APNS_SANDBOX。 HMS是为开发者提供的消息推送平台。 APNS和APNS_SANDBOX是用于推送iOS消息的服务平台。 HMS平台指定的消息内容不超过2K。 APNS和APNS_SANDBOX平台的消息内容不能超过4K。 推送平台的消息内容格式要求详情见application消息体格式。 华为透传消息 { "HMS": { "hps": { "msg": { "type": 1, "body": { "key": "value" } } } } } 华为系统通知栏消息 { "HMS": { "hps": { "msg": { "type": 3, "body": { "content": "Push message content", "title": "Push message content" }, "action": { "type": 1, "param": { "intent": "#Intent;compo=com.rvr/.Activity;S.W=U;end" } } }, "ext": { "biTag": "Trump", "icon": "http://upload.w.org/00/150pxsvg.png" } } } } 苹果平台消息格式 { "APNS": { "aps": { "alert": "hello world" } } }                                                                                                                                   |
| time_to_live       | 否 | String  | 消息发送的生存时间，是相对于发布时间的。 SMN系统将移动推送消息转交给推送平台前，会计算该消息在系统消耗的时间。只有消耗的时间小于time_to_live时，SMN才会将消息转交给推送平台，并将time_to_live减去消耗的时间传递给推送平台，否则消息废弃。 time _to_live的单位是s，变量默认值是3600s，即一小时。值为正整数且小于等于3600\*24。 缺省值：**3600**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
#### 响应参数
**状态码： 200**
表4响应Body参数 
| 参数          | 参数类型   | 描述         |
|:---|:---|:---|
| message_id  | String | 唯一的消息ID。   |
| request_id | String | 请求的唯一标识ID。 |
   
**状态码： 400**
表5响应Body参数 
| 参数        | 参数类型   | 描述             |
|:---|:---|:---|
| request_id | String  | 请求的唯一标识ID。   |
| code        | String | 服务异常错误信息编码。 |
| message   | String   | 服务异常错误信息描述。 |
   
**状态码： 403**
表6响应Body参数 
| 参数        | 参数类型    | 描述         |
|:---|:---|:---|
| request_id | String    | 请求的唯一标识ID。   |
| code        | String | 服务异常错误信息编码。 |
| message    | String  | 服务异常错误信息描述。   |
   
**状态码： 404**
表7响应Body参数 
| 参数            | 参数类型     | 描述           |
|:---|:---|:---|
| request_id | String  | 请求的唯一标识ID。    |
| code        | String   | 服务异常错误信息编码。  |
| message    | String | 服务异常错误信息描述。 |
   
**状态码： 500**
表8响应Body参数 
| 参数           | 参数类型   | 描述           |
|:---|:---|:---|
| request_id | String | 请求的唯一标识ID。   |
| code        | String  | 服务异常错误信息编码。 |
| message      | String  | 服务异常错误信息描述。    |
   
#### 请求示例
- App消息发布
  ```
  POST https://{SMN_Endpoint}/v2/{project_id}/notifications/endpoints/{endpoint_urn}/publish
  {
    "message" : {
      "hps" : {
        "msg" : {
          "action" : {
            "param" : {
              "intent" : "#Intent;compo=com.HC.SmnAppPush.defaultAction/.Activity;S.W=U;end"
            },
            "type" : 1
          },
          "body" : {
            "title" : "hello world",
            "content" : "hello world"
          },
          "type" : 3
        }
      }
    },
    "time_to_live" : 3600
  }
  ```
  
- 使用消息结构体方式的App消息发布
  ```
  POST https://{SMN_Endpoint}/v2/{project_id}/notifications/endpoints/{endpoint_urn}/publish
  {
    "message" : {
      "HMS" : {
        "hps" : {
          "msg" : {
            "action" : {
              "param" : {
                "intent" : "#Intent;compo=com.HC.SmnAppPush.defaultAction/.Activity;S.W=U;end"
              },
              "type" : 1
            },
            "body" : {
              "title" : "hello world",
              "content" : "hello world"
            },
            "type" : 3
          }
        }
      }
    },
    "time_to_live" : 3600
  }
  ```
  
 
#### 响应示例
**状态码： 200**
OK
```
{
  "request_id" : "6a63a18b8bab40ffb71ebd9cb80d0085",
  "message_id" : "bf94b63a5dfb475994d3ac34664e24f2"
}
```
#### 状态码
| 状态码   | 描述                    |
|:---|:---|
| 200 | OK                  |
| 400    | Bad Request          |
| 403   | Unauthorized         |
| 404   | Not Found           |
| 500    | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-smn/ErrorCode.html)。
