消息推送一个好功能,90%的开发者都不知道。

247 阅读6分钟

1.个推报表简介

推送数据报表主要用于统计某一条消息的具体下发情况。单条推送消息下发用户总量有多少,其中成功推送到手机的数量有多少,又有多少用户看到了弹窗通知、点击了弹窗通知并打开了应用。通过消息推送报表可以很直观地看到推送消息流转情况、消息下发到达成功率、用户对消息的点击情况等。

当然推送报表不单单只有上述这一种维度,个推的推送统计主要分了三个维度:消息推送维度、APP推送维度、APP用户维度。

  • 消息推送维度:针对单个消息推送,提供单条消息推送的下发成功数,手机到达数,弹窗展示数等
  • APP推送维度:针对应用单日所有消息推送,单日所有任务的下发成功数,手机到达数,弹窗展示数等
  • APP用户维度:针对应用单日用户数据,应用单日新增用户数、在线用户数等

上述三个维度的推送数据统计则是通过个推开发者中心服务端SDK集成接口来进行输出。个推开发者中心提供详细的可视化图表,服务端SDK集成接口则提供服务端的数据记录和统计。两者的数据都是一致的,但功能和数据类型上有些许不同,使用者可以根据自己需求选用不同的方式。下面将分别从个推开发者中心服务端SDK集成接口两方面对个推报表进行阐述。

2.开发者中心

登录个推开发者中心,在产品与服务界面选择个推消息推送消息推送后进入了应用列表页面,选择相应的应用,点击数据报表即可在数据统计栏目中看到各个维度的推送统计数据。

2.1 推送记录

推送记录中保存了所有的历史推送,通过点击 "推送数据" 可以查询该推送的任务报表情况。

在这里插入图片描述

2.2 推送数据(消息推送维度)

针对单个消息推送,提供报表数据。

  • 百日联网用户数:最近百日所有打开过APP的用户,可以理解为预计可以下发的用户总量。
  • 成功下发数:消息下发的实际用户量。APP在手机后台中存活才会进行下发,否则不会进行消息下发。
  • 到达数:成功下发到手机的消息数。到达手机后因为网络等原因,无法回执到服务端,所以成功下发数会略大于到达数。
  • 展示数:手机弹窗展示消息的数量。部分用户可能对应用设置了禁止弹窗,所以到达数会大于展示数。
  • 点击数:手机用户点击弹窗通知的数量
    在这里插入图片描述
    上图中展示的报表数据是个推+其他渠道的累加数据,点击详情即可看到各个渠道下发统计。其中的 "-" 表示不支持该字段报表
    在这里插入图片描述

2.3 推送统计(APP推送维度)

推送统计从APP推送维度出发,对APP当天所有任务的下发数据进行统计。举个例子,APP开发者15号下发的消息,可能用户16号打开手机才会收到,但是此次数据仍会统计到15号的推送统计中。针对这种情况,个推会对APP统计数据在三天内予以持续更新。所以APP推送统计数据会在之后的三天持续更新。日联网用户数:当天打开应用的用户数

  • 成功下发数、到达数、展示数、点击数:和上述一致

点击展开也能看到各个渠道的App维度统计。

在这里插入图片描述

2.5 实时性和准确性

创建一个新的推送任务,能够实时地看到推送的总体趋势,趋势数据会进行实时更新。

在这里插入图片描述

已完成推送的任务报表数据,为什么到了第二天数据会发生变化? 个推内部推送数据报表分成两种:实时报表和统计报表。第二天统计报表会对前一天的实时报表进行修正。

实时报表以实时性为主,具有实时更新的功能。APP开发者如果想查看当天下发的任务数据,可以选择实时报表。。相比起实时报表,统计报表更加注重准确性,旨在通过统计分析,对数据进行筛选、去重,得到最终的准确报表。APP开发者一般隔天就能查询到准确的报表数据。

3.服务端SDK集成接口

在官网提供的SDK Demo中就有示例程序,做了很好的封装,返回结果也做了预处理。。APP开发者只需要传入简单的参数即可完成报表查询, SDK接口提供了一些开发者平台中没有的数据统计服务,如用户数据中的最近24小时在线趋势统计、根据用户条件查询用户数等。 详细可参考 文档中心Java服务端集成文档

/**
 * 推送结果相关demo
 */
public class PushResultDemo {

    public static IGtPush gtPush = new IGtPush(APPKEY, MASTERSECRET);

    /**
     * 获取推送结果,可查询消息有效可下发总数,消息回执总数,用户点击数等结果。
     * @param taskId
     */
    private static void getPushResultByTaskId(String taskId) {
        Map<String, Object> ret = gtPush.getPushResult(taskId).getResponse();
        System.out.println(JSON.toJSONString(ret));
    }

    /**
     * 获取应用单日的推送数据(推送数据包括:发送总数,在线发送数,接收数,展示数,点击数)(目前只支持查询1天前的数据)
     */
    private static void queryAppPushDataByDate(String date) {
        IQueryResult ret = gtPush.queryAppPushDataByDate(APPID, date);
        Map<String, Object> res = ret.getResponse();
        System.out.println(JSON.toJSONString(ret));
        for(Map.Entry<String,Object> entry: res.entrySet()){
            System.out.println(entry.getKey()+" "+entry.getValue());
        }
    }
    
     /**
     * 通过接口查询当前时间一天内的在线数(十分钟一个点,一小时六个点)
     */
    private static void getLast24HoursOnlineUserStatistics () {
        IQueryResult queryResult = push.getLast24HoursOnlineUserStatistics(APPID);
        System.out.println(queryResult.getResponse().get("onlineStatics"));
    }

    /**
     * 获取某个应用单日的用户数据(用户数据包括:新增用户数,累计注册用户总数,在线峰值,日联网用户数)
注:目前可查询1天前的数据
     */
    private static void queryAppUserDataByDate(String date) {
        IQueryResult ret = push.queryAppUserDataByDate(APPID, date);
        System.out.println(ret.getResponse().toString());

        Map<String, Object> data = (Map<String, Object>) ret.getResponse().get("data");
        System.out.println("新用户注册总数:"+data.get("newRegistCount"));
        System.out.println("用户注册总数:"+data.get("registTotalCount"));
        System.out.println("活跃用户数:"+data.get("activeCount"));
        System.out.println("在线用户数:"+data.get("onlineCount"));
    }

}

小结

推送数据报表是个推消息推送服务中的重要组成成分,通过推送报表可以直观、准确地了解消息触达用户的详细情况,对推送数据一目了然。个推将针对报表服务不断优化,为APP开发者们提供更加完善的推送数据统计支持。