訊息推送一個好功能,90%的開發者都不知道。

個推2018發表於2019-09-26

## 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服務端整合文件](getui/server/java/summary/)


```

/**

 * 推送結果相關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開發者們提供更加完善的推送資料統計支援。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556026/viewspace-2658431/,如需轉載,請註明出處,否則將追究法律責任。

相關文章