# 消息撤回

#### 功能介绍

您调用本API完成消息撤回的功能。撤回功能当前仅支持通知消息与语音播报消息。为免歧义，以下说明中"消息"均为通知消息与语音播报消息。  

#### 使用约束

消息体最大不能超过4096Bytes（不包括Push Token），若超过请求会返回错误码[80300008](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-response#section80300008-消息体大小超过4096bytes不包括push-token)，单次最多携带的Push Token数不能超过1000（系统当前配置值）。  

#### 接口原型

* 承载协议： HTTPS POST

* 接口方向： 开发者服务器 -\> 华为Push服务器

* 接口URL： https://push-api.cloud.huawei.com/v1/\[clientId\]/messages:revoke

* 数据格式： 请求消息：Content-Type: application/json

  响应消息：Content-Type: application/json

![](https://media:201787216197117285)  
\[clientId\] ：请替换为您应用的Client ID（参考[指导](https://developer.huawei.com/consumer/cn/doc/app/agc-help-view-app-info-0000002282674569)获取）  

#### 请求参数

#### Request Header

|参数|取值描述|样例|
|:------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------|
|Authorization|鉴权方式： JWT方式 请参见[基于服务账号生成鉴权令牌](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token)。 说明： 建议JWT令牌过期时间设置为3600秒，有效期内可以复用。 Bearer后面拼接空格，再拼接获取的鉴权信息。|Bearer eyJraWQiOiIx---xxx.eyJhdWQiOiJodHR---xxx.QRodgXa2xeXSt4Gp---xxx|
|push-type|待撤回的消息类型，取值如下： 0：通知消息。 2：语音播报消息。|0|

#### Request Body

|参数|是否必选|参数类型|描述|
|:-------|:---|:---------------|:---------------------------------------------------------------------------------------------------------------------------------------------------|
|notifyId|是|Integer|消息下发时携带的notifyId，详情请参见[notifyId](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param#notification)。|
|token|是|Array \[String\]|撤回消息时目标用户的Push Token。 样例："token": \["\*\*\*\*\*\*\*\*\*\*\*\*"\]。 说明： 单次最多携带1000个Token。|

#### 请求示例

```
// 按照notifyId和token撤回
{
    "notifyId": 3114932,
    "token": [
        "pushToken1",
        "pushToken2",
        "pushToken3"
    ]
}
```

#### 响应参数

#### Response Body

|参数|是否必选|参数类型|描述|
|:--------|:---|:-----|:-----|
|code|是|String|响应码。|
|msg|是|String|响应码描述。|
|requestId|是|String|请求标识。|

#### 响应示例

响应成功示例：

```
{
    "code": "80000000",
    "msg": "Success",
    "requestId": "157*******006"
}
```

响应失败示例：

```
{
    "code": "80100003",
    "msg": "Illegal payload, The header does not contain valid push-type",
    "requestId": "1690*******1701"
}
```

#### HTTP响应码

|HTTP响应码|描述|解决方法|
|:------|:-----------------|:----------------------------------------------------------------------------------|
|200|成功。|-|
|400|参数错误。|请检查业务响应码并根据业务响应码进一步排查问题。|
|401|鉴权失败。|请检查HTTP头中Authorization参数。|
|404|找不到服务。|请检查请求URL是否正确。|
|500|服务内部错误。|请通过[在线提单](https://developer.huawei.com/consumer/cn/support/feedback/#/)提交问题。|
|502|请求连接异常，常见于网络状况不稳定。|建议稍后重试，或通过[在线提单](https://developer.huawei.com/consumer/cn/support/feedback/#/)提交问题。|
|503|流量控制。|· 平均分配发送速度。 · 平均分配推送时间段，不要集中发送。|

#### 业务响应码

#### 80000000 成功

错误信息

Success.

错误描述

发送成功。

可能原因

发送成功。

处理步骤

不涉及。  

#### 80100001 请求参数部分错误

错误信息

Check Parameter Error.

错误描述

请求参数部分错误。

可能原因

请求参数部分错误。

处理步骤

请根据响应消息中的提示，检查并修改请求[参数内容](#请求参数)。  

#### 80100003 消息结构体错误

错误信息

Illegal payload, {errorTips}.

错误描述

消息结构体错误。

可能原因

消息结构体错误。

处理步骤

请根据响应消息中的提示，检查并修改[请求体结构](#请求参数)。  

#### 80100020 消息结构体部分错误

错误信息

Check Parameter Partial Success.

错误描述

消息结构体部分错误。

可能原因

消息结构体部分错误。

处理步骤

按照响应消息中的提示，请检查并修改消息结构体的参数。  

#### 80200001 认证错误

错误信息

Authentication Error.

错误描述

认证错误。

可能原因

1. 发送消息时未添加Authorization参数或Authorization的值为空。

2. 用于申请JWT Token的Project Id和推送消息的Client Id不属于同一个项目。

3. Authorization参数中的JWT Token与实际应用不匹配。

处理步骤

请根据响应消息中的提示，排查请求头中Authorization参数鉴权失败是否存在以下情况：

1. 请检查发送消息时是否添加Authorization参数或Authorization的值为空。

2. 请参考[鉴权令牌生成步骤](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token#开发步骤)中的步骤二，检查推送请求URL（https://push-api.cloud.huawei.com/v1/\[clientId\]/messages:revoke）中的clientId，确保与您当前应用所属的项目保持一致。

3. 请检查Authorization参数中的JWT Token与实际应用是否匹配，详情参见[基于服务账号生成鉴权令牌](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token)。

重新生成JWT Token后再发送请求。  

#### 80200003 Access token过期

错误信息

Access token expired.

错误描述

Access token过期。

可能原因

Access token过期。

处理步骤

请根据响应消息中的提示，重新生成JWT Token后再推送消息，请参见[基于服务账号生成鉴权令牌](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token)。  

#### 80200005 JWT Token过期

错误信息

Jwt token expired.

错误描述

JWT Token过期。

可能原因

JWT Token过期。

处理步骤

请根据响应消息中的提示，重新生成JWT Token后再推送消息，请参见[基于服务账号生成鉴权令牌](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-jwt-token)。  

#### 80300002 当前应用无权限下发推送消息

错误信息

No permission to send message to these tmIDs.

错误描述

当前应用无权限下发推送消息。

可能原因

1. Push服务状态未开通。

2. ClientId不是应用级的ClientId。

处理步骤

1. 请登录[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)网站，查看Push服务状态是否已开通，请参见[开通推送服务](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/push-config-setting)。

2. 请参考[指导](https://developer.huawei.com/consumer/cn/doc/app/agc-help-view-app-info-0000002282674569)检查是否是应用级ClientId。

#### 80300007 所有Token都是无效的

错误信息

All the tokens are invalid.

错误描述

所有Token都是无效的。

可能原因

1. 同一个设备，不同应用的Token原则上是不一样，但实际操作时可能误传递同样的值。

2. 客户端应用配置的应用包名、应用ID与[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)网站上申请的不一致。

3. 终端设备从HarmonyOS 4及以下（简称HarmonyOS）升级到HarmonyOS 5及以上版本（简称HarmonyOS NEXT）后，Push Token需要重新获取。

处理步骤

请根据响应消息中的提示，排查失败的Token是否存在以下情况

1. 请确保未传递其他应用的Push Token。

2. 请确保客户端应用配置的应用包名、应用ID与[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)网站上申请是一致的。

3. 请确保终端设备升级至HarmonyOS NEXT版本后，重新生成对应的Push Token，并使用[HarmonyOS NEXT版本的请求体参数](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/push-scenariozed-api-request-param)进行消息请求。

   请确保使用v1版本的请求URL（https://push-api.cloud.huawei.com/v1/\[clientId\]/messages:revoke）发送REST API请求。

建议您在应用启动时调用getToken接口，若设备的Push Token发生变化，及时上报到您的应用服务器更新Push Token。  

#### 80300010 消息体中的Token数量为0或超过系统设置的默认值

错误信息

token count should within {0} and {1}.

错误描述

消息体中的Token数量为0或超过系统设置的默认值。

可能原因

消息体中的Token数量为0或超过系统设置的默认值（系统当前配置值为1000）。

处理步骤

请根据响应消息中的提示，检查Token数量，若Token数量超过单次限制，请分批次发送。  

#### 80300017 Token列表中token属于多个APP

错误信息

Token app count should not exceed 1.

错误描述

Token列表中token属于多个APP。

可能原因

Token列表中token由多个APP生成，无法处理。

处理步骤

请根据响应消息中的提示，检查Token列表中的多个token是否由不同应用生成的，并使用同个APP生成的token。  

#### 80300028 Token与ClientId对应的应用不一致

错误信息

Token app mismatch with specify app.

错误描述

Token与ClientId对应的应用不一致。

可能原因

1. 同一个设备，不同应用的Token原则上是不一样，但实际操作时可能误传递同样的值。

2. 客户端应用配置的应用包名、应用ID与[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)网站上申请的不一致。

处理步骤

请根据响应消息中的提示，排查是否存在以下情况：

1. 请确保未传递其他应用的Push Token。

2. 请确保客户端应用配置的应用包名、应用ID与[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html)网站上申请是一致的。

#### 80300032 没有消息撤回权限

错误信息

No permission to revoke messages.

错误描述

没有消息撤回权限。

可能原因

没有消息撤回权限。

处理步骤

请同时使用token与notifyId进行消息撤回。  

#### 80000001 系统内部错误

错误信息

CommonService Error.

错误描述

系统内部错误。

可能原因

其他未知错误。

处理步骤

请通过[在线提单](https://developer.huawei.com/consumer/cn/support/feedback/#/)提交问题。  
