个推回执文档

个推回执文档

logo1.png

个推消息回执回调操作步骤与使用文档

一、引言

通过个推平台将消息发送后,个推通过调用第三方的回执接口向第三方发送消息的回执通知,第三方自己决定后续动作,如:统计发送报表等。如果有接入厂商推送渠道,需要先配置厂商的回执,厂商回执给到个推,然后个推发送回执到第三方服务。回执接收发送流程如下:

img

二、厂商回执配置步骤

1. 根据 厂商消息报表补全 文档进行配置

2. 魅族回执配置步骤

1)登录魅族官网--打开“应用列表”界面--点击“打开应用”,见下图:
img
2)进入“配置管理”界面--点击“回执管理”

3)将 https://thirdrcp-hz.getui.com/mz 复制到“回执地址”输入框中,点“添加”,如下图:
img

注:1.魅族只支持单推任务的回执数据;

2.魅族用户必须确保在魅族官网上填写域名地址后,才联系个推客服开通第三方回执权限,否则魅族所有消息无法推送。

三、个推回执配置步骤

1 协议

1.1 数据传递

1) 协议使用 HTTP POST 方式,通过调用第三方预先提供的 URL 来传递信息;

2) POST 数据的内容采用文本格式,每行表示一条消息回执,一次请求可以有一行或多行,每一行的文本内容为 JSON 串;

3) 第三方接口接收请求后有 HTTP 请求响应,无论是否第三方正常处理都不会再尝试重发;

4) 如果请求第三方接口异常(如:发生网络异常、无响应等),尝试三次后如果还是失败将丢弃;

2 相关接口

2.1 通知第三方

1) 单条回调(格式:JSON)

参数名 参数类型 参数说明
appid String 应用 ID
cid string 接收人 CID
taskid string 任务 ID(即 ContentID)
msgid string 消息 ID
code string 结果码(200 -- 成功,400 -- 推送苹果接口失败, 401 -- 用户不存在,402 -- 非活跃用户,500 -- 系统内部异常)目前只有 200 和 400,后续版本扩展。
desc string 推送结果描述sign string Sign=MD5(appid+cid+taskid+msgid+masterSecret)第三方通过该公式使用 mastersecret 计算出自己的 Sign’值,如果 sign== sign’则表示该请求合法。
actionId string 回执 ID
recvtime long 回执上传时间
alias string 根据配置返回

2) 批量回调(格式:文本)

每行内容为单条回调 JSON 格式


3) 常用的回执id

消息渠道 到达 展示 点击
个推通知 0 10000 10010
个推透传 0 -- 60002
华为 110000 -- 60020
小米 120000 -- 120010
魅族 130000 -- 130010
oppo 140000 -- 60030
vivo 150000 -- 60040
apn(苹果) 10009 -- 10019

4)各渠道其它回执说明

厂商 actionId 含义
华为 110000 发送成功
华为 110030 应用未安装(卸载)
华为 110060 定的token在当前安卓终端用户下不存在
华为 110070 通知栏消息不展示
华为 110180 非活跃设备消息
华为 110102 消息频控丢弃
华为 110201 消息发送管控
小米 120020 目标设备无效

2.2 第三方响应

参数名 参数类型 参数说明
code String 成功接收回执(0),未成功(-1)
result string 描述

1) 单条回执示例:

{"code":"200","recvtime":1559252242250,"appid":"laaN0B4deu8HMBXm141","sign":"84702a155dc2a13ad7e037b29c751a","msgid":"1559252299573551004101","actionId":"110000","taskid":"OSS-0531_RZBMR2SwQj66QmqOy86","desc":"ok","cid":"d12403fad5a8b5e94896f8b65be228"}

2) 批量回执示例:

{"code":"200","recvtime":1559252242250,"appid":"laaN0B4deu8HMBXm141","sign":"84702a155dc2a13ad7e037b29c751a","msgid":"1559252299573551004101","actionId":"110000","taskid":"OSS-0531_RZBMR2SwQj66QmqOy86","desc":"ok","cid":"d12403fad5a8b5e94896f8b65be228"}
{"code":"200","recvtime":1559252242250,"appid":"laaN0B4deu8HMBXm141","sign":"84702a155dc2a13ad7e037b29c751a","msgid":"1559252299573551004101","actionId":"120000","taskid":"OSS-0531_RZBMR2SwQj66QmqOy86","desc":"ok","cid":"d12403fad5a8b5e94896f8b65be228"}

3) 响应示例:

{"code":"0","result":"ok"}

3. 使用方式

3.1 登记回执 url 步骤

1) 首先提供接受第三方回执的 URL 地址,格式以 http://或 https://开头;

2) 提供您应用的 appid

3) 您需要哪些回执信息,目前提供:收到、展示、点击和自定义回执。

示例代码:
首先开启一个服务端,如:
第三方提供的回执 URL 地址为:http://xxx.xxx.xx.xxx/getReportUrl.do
SpringMVC 的 controller 接受回执

@RequestMapping(value = "getReportUrl.do")
    @ResponseBody
    public Map<String,Object> getReportUrl(HttpServletRequest request) throws IOException{
        byte[] bytes = getRequestInputStream(request);
        System.out.println(new String(bytes));
        return null;
    }
    public static byte[] getRequestInputStream(HttpServletRequest request) throws IOException {
        ServletInputStream input = request.getInputStream();
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int position = 0;
        while (true) {
            position = input.read(buffer);
            if (position == -1) {
                break;
            }
            output.write(buffer, 0, position);
        }
        return output.toByteArray();

3.2 服务端处理回执

  个推会将推送结果以文本形式通过 HTTP POST 方式发送到上面提供的 URL,开发人员需
要解析字段,并返回是否成功接收回执,字段解析详见(接口)部分。


  Ps:关于通过苹果 APNs 推送和通过个推推送的回执的一点不同


  苹果推送:回执只会返回苹果推送失败的结果,其结果码为 400.

  个推:回执会返回所有通过个推推送(包含通过 ios 在线推送),成功到达客户端的结果,
其结果码为 200。


  因此,第三方接收到的结果码为 200 的回执指成功发送到客户端的消息的回执,结果码为
400 的回执指走苹果推送失败的消息的回执。

注:因 POST 数据只是普通文本内容,整个 HTTP BODY 不是一个 JSON 串,所以不要对Content-Type强制
限制接收 application/json 格式,需要读取 body 体后按单行 JSON 处理即可。

四、开通回执权限

提供个推appid和回执url地址,联系对应的商务同学,或者添加下方二维码进行咨询

开发者中心 SDK 下载

文档中心搜索

在线
咨询

微信扫一扫

随时联系技术支持

在线
咨询