推送系統從0到1(三):推送任務的建立

21 評論 25141 瀏覽 147 收藏 13 分鐘

如何保證把內容準確無誤地投遞給想要投遞的人,這將會是推送系統通信層面的難點。

上一篇文章已經講述了如何選擇推送服務,并梳理了用戶與設備、Token之間的關系,用設備號才能精準的標識用戶。如果還無法清晰的了解這三者的關系,可以回顧上一篇文章:推送系統從0到1(二):了解你的用戶

本篇主要為大家剖析推送任務的建立,如何在搭建推送系統中設計任務建立的過程,同時也可以了解各大推送平臺的運作方式。作為系統的設計者,我們除了知道給什么用戶在什么時間推送什么內容以外,更重要的是如何保證把內容準確無誤的投遞給想要投遞的人,這將會是推送系統通信層面的難點。

一. 建立自帶過濾及凈化器的用戶池

為了實現把推送內容準確無誤的投遞給想要投遞的用戶,需要滿足以下幾個條件:

  1. 用戶是不變的
  2. 用戶的‘通訊設備’(設備)是不變的
  3. 用戶的‘聯系方式’(Token)是不變的

這也是大多第三方推送平臺的弊端,當用戶‘通訊設備’或‘聯系方式’發生改變的時候,部分第三方推送平臺會把該用戶當成‘失聯’的用戶,再也無法聯系上該用戶,此時用戶變成為無效用戶。因此運營童鞋經常會發現,推送效果越來越差,到達率、點擊率越來越低,其實是其中的許多用戶已經失聯,再也無法把消息發送給該用戶。這些無效用戶既然收不到推送,也自然不會產生點擊,但是卻會讓推送的目標用戶數虛高。所以這三點在推送任務建立之前,必須通過產品設計的角度,讓其成為“不變的”。

建立用戶、設備、Token的綁定機制

如果閱讀過我上一篇文章就會知道,我把用戶、設備、Token的關系比喻成用戶、電話、電話卡之前的關系。想要用戶永遠不換電話或者不換電話號碼似乎并不現實,所以改變是必然存在的,重要的是通過我們對其關系的梳理,即便發生了改變,我們仍然知道這個用戶是誰,用的是哪個設備,如何聯系該用戶。所以首先我們建立三者的綁定機制。

以上三種情景在實際過程中經常會出現。除此以外還有第四種情景,即設備及Token未發生改變,但用戶發生了變化,此情況多出現在用戶在同個設備上登陸多個賬號時出現,該方式主要的處理辦法為賬號信息同步,在此不做過多的闡述。以上方式能夠解決大部分情況下由于設備或Token發生改變時,該用戶變成了無效用戶的問題。那么綜合以上三種情況,我們在設計用戶綁定機制時,應當設計成以下方式。此方式可以最大程度的保證你推送的用戶是有效的,真實的,且是你認知的那個用戶。

  1. 一個用戶對應多個設備,一個設備對應唯一的Token。
  2. 當Token發生改變,則用新的Token替換原來的Token,并與設備綁定。
  3. 當設備發生改變,Token未變時,則用新的設備綁定舊Token及用戶。
  4. 當設備發生改變,Token發生改變時,使用新的設備(及其對應Token)綁定用戶,同時舊設備可做有效性檢測(如模擬發送測試等),若舊設備無效則解除與用戶綁定。

具體流程可見下圖:

按照以上方式,即可盡可能的保證用戶的“不變”,不管用戶設備或‘通訊方式’如何更換,該用戶仍然是原來認知中的用戶,并且有‘最新最有效的聯絡方式’。該方式如同一個自帶過濾和凈化器的池子,盡可能的保證池里的‘生物’健康有效的存活。但是即便如此,在建立推送任務時,還是需要做有效用戶的篩查。因為仔細研究上述方式,就會發現一個弊端,不管哪種方式重新綁定或者替換,都建立在用戶‘主動’告知其設備信息發生改變的前提下。若用戶不告知,則系統仍無法進行過濾和關系的重建。所以有效用戶的篩查就很有必要。

二. 有效用戶的篩查

在建立推送任務時,進行有效用戶的篩查就是針對類似于用戶卸載APP后,Token已經失效,但是用戶無法回報該信息。此時我們仍把這個用戶當作是有效用戶進行發送,最后的結果就是該用戶收不到。這是大多數推送系統在建立推送任務時一定會做的有效用戶的篩查(甄別)。

建立推送任務時,我們會選擇目標用戶,此時根據條件在上述構建的用戶池中撈出我們的目標用戶。這些目標用戶在我們帶有過濾系統的用戶池中已經擁有最新的聯絡方式了。但就像我所說,即便如此,仍可能存在用戶的設備或Token已經失效,但無法及時匯報給系統的情況,例如APP卸載、APP重裝但未開啟、更換設備后未登錄過等。所以把用戶撈出來后,首先要做的就是有效用戶的篩查。我們可以通過以下方式判斷該用戶的設備或Token是否有效:

  1. 查詢設備的瀏覽情況,此方式需要提前埋點記錄用戶行為(后續做精準推送的必要條件)。
  2. 查詢設備的賬號登陸情況,若設備關聯賬號已經發生變更,可能該設備已屬于其他用戶。
  3. 查詢該設備上次推送,上次推送服務返回的狀態可以檢測Token有效性的。
  4. 疑似無效設備的預推送,在與客戶端預先約定好的情況下,發送推送測試來檢查Token有效性,但需要在用戶設備不會受干擾(不會顯示)的前提下。

通過上述方式,可以把無效的用戶進行標記,從本次推送任務中刪除,并進入黑名單。關于黑名單機制在后續文章中將會詳細講解。此時便完成推送任務的第一步,從用戶池中撈出用戶,并進行有效性的篩查。在完成以上步驟后,推送消息的下發成功率將達到95%以上。(蘋果返回的下發成功情況沒有參考價值,部分第三方平臺返回的下發成功情況也存疑)當我們盡可能準確的選出有效用戶之后,如何把準確的消息發給這些用戶呢。

三. 推送任務的建立

像小時候學習寫作文,記事文的幾個要素:時間、地點、人物、事情。那么建立推送任務也是如此,上述我們已經講了人物的部分,我們已經把有效的用戶確定了,如果想要給不用的用戶發送不同的內容,后續文章講解精準推送的部分將會詳細講到,本次不在闡述。那么此時需要確定的是發送時間、發送設備、發送內容。

  1. 發送時間:從發送時間開始,推送任務開始執行,批量/逐個發送到用戶的設備上。
  2. 發送設備:上述篩出有效用戶的設備,設備系統(Android、IOS、PC等),通知推送的方式(應用內推送暫不闡述)。
  3. 發送內容:推送通知的標題、內容、圖片、其他富文本、推送的著陸頁等

梳理上述內容及推送任務之間的關系,可以從下圖中看出來,設置發送時間,將會作為任務執行時間,而發送設備決定了用戶在哪個設備上接受什么類型的消息。發送內容中的通知信息將會在用戶的設備上的通知欄展示。設置著陸頁將會是用戶點擊之后跳轉的頁面。

此時在設置好這些內容后,推送系統將按照時間執行任務。用戶收到消息將會看到你設置的通知內容,若用戶有興趣點擊,將會跳轉至你設置好的著陸頁。此時推送任務的建立即完成。關于內容的設計,蘊含很多運營知識,將會在后續介紹推送運營的時間進行詳細介紹。不過值得注意的是,推送內容如標題、內容、圖片等等,會因為設備端的展示限制和系統支持的富文本情況將有所區別,如果IOS 10及以上系統支持富文本推送,Android系統支持自定義通知欄。運營人員在使用個性化的推送內容展示時需要與客戶端有所約定,關于客戶端所支持的通知內容展示情況,將會在下一篇中進行詳細介紹。

四. 推送任務如何傳輸

在推送任務建立之后,通知消息經過推送系統的幾個過程最終達到用戶的設備上,消息是如何從推送系統到達用戶的設備上的?通知消息在傳輸的過程中是否會遇到困難,消息在設備上是如何展示的?請期待下一篇“推送系統從0到1(四)通知消息如何達到設備”。

五. 總結

本篇文章主要闡述了建立有效過濾機制的用戶池到建立推送任務的過程,歸納成以下3點:

  1. 建立有效的用戶池:獲得用戶最新的‘聯系方式’
  2. 建立有效性篩查機制:無效設備統統剔除
  3. 建立推送任務的要素:推送時間、推送設備、推送用戶、推送內容(標題、文案、圖片、其他富文本、著陸頁)

相關閱讀

推送系統從0到1(一):是系統不是工具

推送系統從0到1(二):了解你的用戶

 

本文由 @番茄那只羊 原創發布于人人都是產品經理。未經許可,禁止轉載。

題圖來自Unsplash,基于CC0協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 寫的真好,剛好最近在研究推送系統,受教了?。。?/p>

    來自湖南 回復
  2. 牛逼?。。。。?!

    來自廣東 回復
  3. 【在完成以上步驟后,推送消息的下發成功率將達到95%以上。(蘋果返回的下發成功情況沒有參考價值,部分第三方平臺返回的下發成功情況也存疑)】IOS不使用蘋果返回的下發情況,那怎么才能準確統計下發成功率呢?

    來自四川 回復
  4. 設備發生改變,Token未變,這種情況怎么理解,不是設備對應唯一Token嗎,若果設備改變了Token也會跟著改變吧。

    來自河北 回復
  5. 樓主后續的文章沒有呢嗎

    來自福建 回復
    1. 更新了哦~您可以點我頭像進去~ ??

      來自廣東 回復
  6. 我是做APP推送的(假設用戶唯一標識是手機號就是會員ID),有些疑惑的是作者說了這么多設備號作為推送唯一標識,是不是大前提是與該設備綁定的手機號必須是我APP的有效用戶,其實在篩選目標設備的時候,已經在用手機號作為唯一標識了,否則空記錄設備號是無意義的;那么整篇文章的核心思想是否可以理解為以用戶當前有效手機號綁定的設備作為唯一標識來推送呢?不論手機號改變,還是設備改變,僅掃描當前有效手機號綁定的設備推送即可?

    來自浙江 回復
    1. 您說的沒錯,假設APP是必須登錄會員賬號(如電商類APP),則使用會員ID作為唯一標識更好。同時這個推送系列文章同樣適用,只是把我文中所述使用設備號替換成您使用會員賬號作為唯一標識即可。感謝~

      來自廣東 回復
  7. 哇 寫的很系統很專業!樓主在哪里工作呀?要跳槽嗎??!~~

    來自北京 回復
  8. 用戶‘主動’告知其設備信息發生改變。
    請問這種“主動”是對應的什么場景呢

    來自四川 回復
    1. 這種“主動”體現在用戶打開APP
      因為前端需要把“用戶設備信息更變”這個消息告訴后端。
      只能通過APP的請求或者相關進程提交數據。
      如果用戶不主動打開APP,除非APP自己在后臺運行。
      否則前端無法把這個消息告訴后端。

      來自廣東 回復
  9. 請問在篩選有效用戶時,您提到token失效的情況,這時避免向無效token建立推送任務;
    可是在文章1中不是說使用設備作為唯一標志么,所以是不是有些沖突。如果用設備作為唯一標志,那么不就不用管token,直接按照設備推送就好了。

    來自四川 回復
    1. 1.使用設備號作為唯一標識。
      2.當token失效的時候,請將該token對應的設備號標記為“不可推送狀態”,當這個設備號對應的token發生變化后,再重新標記為“可推送狀態”。
      3.直接按照設備號推送也可以,如果避免向無效token推送有以下兩個好處:
      1)避免因為token失效導致推送任務被中斷,提高推送效率
      2)在計算推送成功率的時候,無效token會導致推送成功率被降低,與實際不符。

      來自廣東 回復
  10. 請問一下。如果設備改變,Token改變,該如何判斷該用戶使用了新設備?

    來自北京 回復
    1. 如果有會員ID(登錄)功能,可以通過會員ID綁定設備。當會員在新的設備登錄后即可知道。
      如果沒有會員ID,可以尋找是否有與網站相關,且可標識用戶的憑證替代會員ID實現。
      如果都沒有,那么相當于一個新用戶,很難關聯起來。即使通過對比兩個設備的行為相似度,仍存在準確度和成本過高的問題。

      來自廣東 回復
  11. 加油 等你更

    來自北京 回復
    1. 已經更到第七篇了哦
      http://www.aharts.cn/user-research/1413267.html
      感謝支持~~ ??

      來自廣東 回復
  12. 寫的很棒啊,感覺學到好多。加油加油 ??

    來自上海 回復
    1. 感謝支持~~ ??

      來自廣東 回復
  13. ??

    來自廣東 回復
    1. ??

      來自廣東 回復