You need to enable JavaScript to run this app.
导航

PUSH全量推送

最近更新时间2023.02.14 16:08:37

首次发布时间2021.12.16 16:49:05

参考此文档接入push全量推送能力,帮助客户侧实现在控制台筛选推送内容,并在指定时间将内容全量推送到客户侧C端用户。

流程概述

流程图

alt

时序图
alt

接入步骤
  1. 客户侧开发回调接口并上线。
    该回调接口主要用于接收火山引擎侧推送的内容。客户侧在平台配置了推送任务,任务执行时会将推送内容通过这个回调地址发送。客户侧服务端接收到内容后再通过push通道下发到客户侧客户端(APP)。
  2. 客户侧运营在火山控制台配配置推送任务。
    具体操作步骤参见push运营操作手册
  3. 客户侧服务端接收火山引擎侧发送的推送内容并自主做C端下发。
  4. 客户侧C端用户消费内容并埋点上报(可选)。
接口说明

请求方式

POST application/json

签名校验

alt

签名参数

参数描述类型说明
timestamp时间戳long10位时间戳(单位:秒),为保证安全,与当前时间戳绝对值不要超过3600s
nonce随机数String请求随机串,随机串长度为6-32位数字和字母的组合,大小写敏感
body请求体json请求体body字节流

secretKey

密钥

String

当客户在火山引擎内容定制控制台创建正式应用后,进入应用详情页,可以查看App_key,即该签名方法中的secretKey参数。

签名算法

Hmac_SHA256算法

签名步骤

  • 以上图数据为例,拼接签名字符串,按照timestamp,nonce,body顺序拼接字符串SignatureStr:
1650990009ffef232sf3{"age":1111111,"name":"alice"}
  • 计算Hmac256,并将结果做HexEncode:
    HexEncode(Hmac256(SignatureStr,SecretKey)) 得签名结果到结果如下
d5dbe60efb2d7f9d1a4d07e8e77fab5fd678f46f079443a7cbe87a3cad410553

签名示例

func GenSignature(timestamp, nonce, body, secretKey string) string {
        // 按照timestamp,nonce,body 顺序拼接签名字符串
        signatureStr := timestamp+nonce+body
        hmacSha256 := hmac.New(sha256.New, []byte(secretKey))
        hmacSha256.Write([]byte(signatureStr))
        //将sha256转成16进制字符串
        signature := fmt.Sprintf("%x", hmacSha256.Sum(nil))
        return signature
}

请求参数

参数描述类型是否必填说明
push_id推送的唯一标识String每个推送都对应一个push_id
group_id内容idString内容唯一标识
article_url内容地址String内容详情页H5页面地址
title内容标题String
abstract内容简介String内容的摘要

响应参数

参数描述类型说明

ret

响应状态码

long

0:成功
非0:失败

msg

响应结果说明

String

success:成功;
当失败的时候,在msg中提供相应失败原因

请求示例

火山引擎侧向上述客户侧服务端提供的回调接口发送请求的示例

POST / HTTP/1.1
Host: xxx.xxx.xxx
Timestamp: 1651024696
Nonce: 2323233
Signature: 0791cee3dc58c581e93f21f3dad1dee2d3827a29f7c777baaadf11aa440fe4b2
Content-Type: application/json
Content-Length: 128
{
    "push_id": "2212121212",
    "group_id": "232323232",
    "article_url": "https://www.bytedance.com/",
    "title": "测试标题",
    "abstract": "测试摘要"
}

响应示例

客户侧服务端返回给火山引擎侧的响应数据

{
    "ret":0, // 响应状态码
    "msg":"success" // 响应结果说明
}

特别注意事项

注意

  • 防重复推送说明: 建议客户侧服务端根据请求参数中的push_id做防重复
  • 超时说明: 默认5s超时,如果收到回调信息处理比较耗时,建议采用异步的方式处理。