推送系統(tǒng)從0到1(三):推送任務(wù)的建立

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

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

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

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

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

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

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

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

建立用戶、設(shè)備、Token的綁定機制

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

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

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

具體流程可見下圖:

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

二. 有效用戶的篩查

在建立推送任務(wù)時,進行有效用戶的篩查就是針對類似于用戶卸載APP后,Token已經(jīng)失效,但是用戶無法回報該信息。此時我們?nèi)园堰@個用戶當(dāng)作是有效用戶進行發(fā)送,最后的結(jié)果就是該用戶收不到。這是大多數(shù)推送系統(tǒng)在建立推送任務(wù)時一定會做的有效用戶的篩查(甄別)

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

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

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

三. 推送任務(wù)的建立

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

  1. 發(fā)送時間:從發(fā)送時間開始,推送任務(wù)開始執(zhí)行,批量/逐個發(fā)送到用戶的設(shè)備上。
  2. 發(fā)送設(shè)備:上述篩出有效用戶的設(shè)備,設(shè)備系統(tǒng)(Android、IOS、PC等),通知推送的方式(應(yīng)用內(nèi)推送暫不闡述)。
  3. 發(fā)送內(nèi)容:推送通知的標(biāo)題、內(nèi)容、圖片、其他富文本、推送的著陸頁等

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

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

四. 推送任務(wù)如何傳輸

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

五. 總結(jié)

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

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

相關(guān)閱讀

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

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

 

本文由 @番茄那只羊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 寫的真好,剛好最近在研究推送系統(tǒng),受教了?。?!

    來自湖南 回復(fù)
  2. 牛逼!?。。。?!

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

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

    來自河北 回復(fù)
  5. 樓主后續(xù)的文章沒有呢嗎

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

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

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

      來自廣東 回復(fù)
  7. 哇 寫的很系統(tǒng)很專業(yè)!樓主在哪里工作呀?要跳槽嗎?。~

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

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

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

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

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

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

      來自廣東 回復(fù)
  11. 加油 等你更

    來自北京 回復(fù)
    1. 已經(jīng)更到第七篇了哦
      http://zhangjingwei.cn/user-research/1413267.html
      感謝支持~~ ??

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

    來自上海 回復(fù)
    1. 感謝支持~~ ??

      來自廣東 回復(fù)
  13. ??

    來自廣東 回復(fù)
    1. ??

      來自廣東 回復(fù)