推送系統(tǒng)從0到1(三):推送任務(wù)的建立
如何保證把內(nèi)容準(zhǔn)確無(wú)誤地投遞給想要投遞的人,這將會(huì)是推送系統(tǒng)通信層面的難點(diǎn)。
上一篇文章已經(jīng)講述了如何選擇推送服務(wù),并梳理了用戶與設(shè)備、Token之間的關(guān)系,用設(shè)備號(hào)才能精準(zhǔn)的標(biāo)識(shí)用戶。如果還無(wú)法清晰的了解這三者的關(guān)系,可以回顧上一篇文章:推送系統(tǒng)從0到1(二):了解你的用戶
本篇主要為大家剖析推送任務(wù)的建立,如何在搭建推送系統(tǒng)中設(shè)計(jì)任務(wù)建立的過(guò)程,同時(shí)也可以了解各大推送平臺(tái)的運(yùn)作方式。作為系統(tǒng)的設(shè)計(jì)者,我們除了知道給什么用戶在什么時(shí)間推送什么內(nèi)容以外,更重要的是如何保證把內(nèi)容準(zhǔn)確無(wú)誤的投遞給想要投遞的人,這將會(huì)是推送系統(tǒng)通信層面的難點(diǎn)。
一. 建立自帶過(guò)濾及凈化器的用戶池
為了實(shí)現(xiàn)把推送內(nèi)容準(zhǔn)確無(wú)誤的投遞給想要投遞的用戶,需要滿足以下幾個(gè)條件:
- 用戶是不變的
- 用戶的‘通訊設(shè)備’(設(shè)備)是不變的
- 用戶的‘聯(lián)系方式’(Token)是不變的
這也是大多第三方推送平臺(tái)的弊端,當(dāng)用戶‘通訊設(shè)備’或‘聯(lián)系方式’發(fā)生改變的時(shí)候,部分第三方推送平臺(tái)會(huì)把該用戶當(dāng)成‘失聯(lián)’的用戶,再也無(wú)法聯(lián)系上該用戶,此時(shí)用戶變成為無(wú)效用戶。因此運(yùn)營(yíng)童鞋經(jīng)常會(huì)發(fā)現(xiàn),推送效果越來(lái)越差,到達(dá)率、點(diǎn)擊率越來(lái)越低,其實(shí)是其中的許多用戶已經(jīng)失聯(lián),再也無(wú)法把消息發(fā)送給該用戶。這些無(wú)效用戶既然收不到推送,也自然不會(huì)產(chǎn)生點(diǎn)擊,但是卻會(huì)讓推送的目標(biāo)用戶數(shù)虛高。所以這三點(diǎn)在推送任務(wù)建立之前,必須通過(guò)產(chǎn)品設(shè)計(jì)的角度,讓其成為“不變的”。
建立用戶、設(shè)備、Token的綁定機(jī)制
如果閱讀過(guò)我上一篇文章就會(huì)知道,我把用戶、設(shè)備、Token的關(guān)系比喻成用戶、電話、電話卡之前的關(guān)系。想要用戶永遠(yuǎn)不換電話或者不換電話號(hào)碼似乎并不現(xiàn)實(shí),所以改變是必然存在的,重要的是通過(guò)我們對(duì)其關(guān)系的梳理,即便發(fā)生了改變,我們?nèi)匀恢肋@個(gè)用戶是誰(shuí),用的是哪個(gè)設(shè)備,如何聯(lián)系該用戶。所以首先我們建立三者的綁定機(jī)制。
以上三種情景在實(shí)際過(guò)程中經(jīng)常會(huì)出現(xiàn)。除此以外還有第四種情景,即設(shè)備及Token未發(fā)生改變,但用戶發(fā)生了變化,此情況多出現(xiàn)在用戶在同個(gè)設(shè)備上登陸多個(gè)賬號(hào)時(shí)出現(xiàn),該方式主要的處理辦法為賬號(hào)信息同步,在此不做過(guò)多的闡述。以上方式能夠解決大部分情況下由于設(shè)備或Token發(fā)生改變時(shí),該用戶變成了無(wú)效用戶的問(wèn)題。那么綜合以上三種情況,我們?cè)谠O(shè)計(jì)用戶綁定機(jī)制時(shí),應(yīng)當(dāng)設(shè)計(jì)成以下方式。此方式可以最大程度的保證你推送的用戶是有效的,真實(shí)的,且是你認(rèn)知的那個(gè)用戶。
- 一個(gè)用戶對(duì)應(yīng)多個(gè)設(shè)備,一個(gè)設(shè)備對(duì)應(yīng)唯一的Token。
- 當(dāng)Token發(fā)生改變,則用新的Token替換原來(lái)的Token,并與設(shè)備綁定。
- 當(dāng)設(shè)備發(fā)生改變,Token未變時(shí),則用新的設(shè)備綁定舊Token及用戶。
- 當(dāng)設(shè)備發(fā)生改變,Token發(fā)生改變時(shí),使用新的設(shè)備(及其對(duì)應(yīng)Token)綁定用戶,同時(shí)舊設(shè)備可做有效性檢測(cè)(如模擬發(fā)送測(cè)試等),若舊設(shè)備無(wú)效則解除與用戶綁定。
具體流程可見(jiàn)下圖:
按照以上方式,即可盡可能的保證用戶的“不變”,不管用戶設(shè)備或‘通訊方式’如何更換,該用戶仍然是原來(lái)認(rèn)知中的用戶,并且有‘最新最有效的聯(lián)絡(luò)方式’。該方式如同一個(gè)自帶過(guò)濾和凈化器的池子,盡可能的保證池里的‘生物’健康有效的存活。但是即便如此,在建立推送任務(wù)時(shí),還是需要做有效用戶的篩查。因?yàn)樽屑?xì)研究上述方式,就會(huì)發(fā)現(xiàn)一個(gè)弊端,不管哪種方式重新綁定或者替換,都建立在用戶‘主動(dòng)’告知其設(shè)備信息發(fā)生改變的前提下。若用戶不告知,則系統(tǒng)仍無(wú)法進(jìn)行過(guò)濾和關(guān)系的重建。所以有效用戶的篩查就很有必要。
二. 有效用戶的篩查
在建立推送任務(wù)時(shí),進(jìn)行有效用戶的篩查就是針對(duì)類似于用戶卸載APP后,Token已經(jīng)失效,但是用戶無(wú)法回報(bào)該信息。此時(shí)我們?nèi)园堰@個(gè)用戶當(dāng)作是有效用戶進(jìn)行發(fā)送,最后的結(jié)果就是該用戶收不到。這是大多數(shù)推送系統(tǒng)在建立推送任務(wù)時(shí)一定會(huì)做的有效用戶的篩查(甄別)。
建立推送任務(wù)時(shí),我們會(huì)選擇目標(biāo)用戶,此時(shí)根據(jù)條件在上述構(gòu)建的用戶池中撈出我們的目標(biāo)用戶。這些目標(biāo)用戶在我們帶有過(guò)濾系統(tǒng)的用戶池中已經(jīng)擁有最新的聯(lián)絡(luò)方式了。但就像我所說(shuō),即便如此,仍可能存在用戶的設(shè)備或Token已經(jīng)失效,但無(wú)法及時(shí)匯報(bào)給系統(tǒng)的情況,例如APP卸載、APP重裝但未開(kāi)啟、更換設(shè)備后未登錄過(guò)等。所以把用戶撈出來(lái)后,首先要做的就是有效用戶的篩查。我們可以通過(guò)以下方式判斷該用戶的設(shè)備或Token是否有效:
- 查詢?cè)O(shè)備的瀏覽情況,此方式需要提前埋點(diǎn)記錄用戶行為(后續(xù)做精準(zhǔn)推送的必要條件)。
- 查詢?cè)O(shè)備的賬號(hào)登陸情況,若設(shè)備關(guān)聯(lián)賬號(hào)已經(jīng)發(fā)生變更,可能該設(shè)備已屬于其他用戶。
- 查詢?cè)撛O(shè)備上次推送,上次推送服務(wù)返回的狀態(tài)可以檢測(cè)Token有效性的。
- 疑似無(wú)效設(shè)備的預(yù)推送,在與客戶端預(yù)先約定好的情況下,發(fā)送推送測(cè)試來(lái)檢查T(mén)oken有效性,但需要在用戶設(shè)備不會(huì)受干擾(不會(huì)顯示)的前提下。
通過(guò)上述方式,可以把無(wú)效的用戶進(jìn)行標(biāo)記,從本次推送任務(wù)中刪除,并進(jìn)入黑名單。關(guān)于黑名單機(jī)制在后續(xù)文章中將會(huì)詳細(xì)講解。此時(shí)便完成推送任務(wù)的第一步,從用戶池中撈出用戶,并進(jìn)行有效性的篩查。在完成以上步驟后,推送消息的下發(fā)成功率將達(dá)到95%以上。(蘋(píng)果返回的下發(fā)成功情況沒(méi)有參考價(jià)值,部分第三方平臺(tái)返回的下發(fā)成功情況也存疑)當(dāng)我們盡可能準(zhǔn)確的選出有效用戶之后,如何把準(zhǔn)確的消息發(fā)給這些用戶呢。
三. 推送任務(wù)的建立
像小時(shí)候?qū)W習(xí)寫(xiě)作文,記事文的幾個(gè)要素:時(shí)間、地點(diǎn)、人物、事情。那么建立推送任務(wù)也是如此,上述我們已經(jīng)講了人物的部分,我們已經(jīng)把有效的用戶確定了,如果想要給不用的用戶發(fā)送不同的內(nèi)容,后續(xù)文章講解精準(zhǔn)推送的部分將會(huì)詳細(xì)講到,本次不在闡述。那么此時(shí)需要確定的是發(fā)送時(shí)間、發(fā)送設(shè)備、發(fā)送內(nèi)容。
- 發(fā)送時(shí)間:從發(fā)送時(shí)間開(kāi)始,推送任務(wù)開(kāi)始執(zhí)行,批量/逐個(gè)發(fā)送到用戶的設(shè)備上。
- 發(fā)送設(shè)備:上述篩出有效用戶的設(shè)備,設(shè)備系統(tǒng)(Android、IOS、PC等),通知推送的方式(應(yīng)用內(nèi)推送暫不闡述)。
- 發(fā)送內(nèi)容:推送通知的標(biāo)題、內(nèi)容、圖片、其他富文本、推送的著陸頁(yè)等
梳理上述內(nèi)容及推送任務(wù)之間的關(guān)系,可以從下圖中看出來(lái),設(shè)置發(fā)送時(shí)間,將會(huì)作為任務(wù)執(zhí)行時(shí)間,而發(fā)送設(shè)備決定了用戶在哪個(gè)設(shè)備上接受什么類型的消息。發(fā)送內(nèi)容中的通知信息將會(huì)在用戶的設(shè)備上的通知欄展示。設(shè)置著陸頁(yè)將會(huì)是用戶點(diǎn)擊之后跳轉(zhuǎn)的頁(yè)面。
此時(shí)在設(shè)置好這些內(nèi)容后,推送系統(tǒng)將按照時(shí)間執(zhí)行任務(wù)。用戶收到消息將會(huì)看到你設(shè)置的通知內(nèi)容,若用戶有興趣點(diǎn)擊,將會(huì)跳轉(zhuǎn)至你設(shè)置好的著陸頁(yè)。此時(shí)推送任務(wù)的建立即完成。關(guān)于內(nèi)容的設(shè)計(jì),蘊(yùn)含很多運(yùn)營(yíng)知識(shí),將會(huì)在后續(xù)介紹推送運(yùn)營(yíng)的時(shí)間進(jìn)行詳細(xì)介紹。不過(guò)值得注意的是,推送內(nèi)容如標(biāo)題、內(nèi)容、圖片等等,會(huì)因?yàn)樵O(shè)備端的展示限制和系統(tǒng)支持的富文本情況將有所區(qū)別,如果IOS 10及以上系統(tǒng)支持富文本推送,Android系統(tǒng)支持自定義通知欄。運(yùn)營(yíng)人員在使用個(gè)性化的推送內(nèi)容展示時(shí)需要與客戶端有所約定,關(guān)于客戶端所支持的通知內(nèi)容展示情況,將會(huì)在下一篇中進(jìn)行詳細(xì)介紹。
四. 推送任務(wù)如何傳輸
在推送任務(wù)建立之后,通知消息經(jīng)過(guò)推送系統(tǒng)的幾個(gè)過(guò)程最終達(dá)到用戶的設(shè)備上,消息是如何從推送系統(tǒng)到達(dá)用戶的設(shè)備上的?通知消息在傳輸?shù)倪^(guò)程中是否會(huì)遇到困難,消息在設(shè)備上是如何展示的?請(qǐng)期待下一篇“推送系統(tǒng)從0到1(四)通知消息如何達(dá)到設(shè)備”。
五. 總結(jié)
本篇文章主要闡述了建立有效過(guò)濾機(jī)制的用戶池到建立推送任務(wù)的過(guò)程,歸納成以下3點(diǎn):
- 建立有效的用戶池:獲得用戶最新的‘聯(lián)系方式’
- 建立有效性篩查機(jī)制:無(wú)效設(shè)備統(tǒng)統(tǒng)剔除
- 建立推送任務(wù)的要素:推送時(shí)間、推送設(shè)備、推送用戶、推送內(nèi)容(標(biāo)題、文案、圖片、其他富文本、著陸頁(yè))
相關(guān)閱讀
推送系統(tǒng)從0到1(一):是系統(tǒng)不是工具
本文由 @番茄那只羊 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議
寫(xiě)的真好,剛好最近在研究推送系統(tǒng),受教了?。。?/p>
牛逼?。。。。?!
【在完成以上步驟后,推送消息的下發(fā)成功率將達(dá)到95%以上。(蘋(píng)果返回的下發(fā)成功情況沒(méi)有參考價(jià)值,部分第三方平臺(tái)返回的下發(fā)成功情況也存疑)】IOS不使用蘋(píng)果返回的下發(fā)情況,那怎么才能準(zhǔn)確統(tǒng)計(jì)下發(fā)成功率呢?
設(shè)備發(fā)生改變,Token未變,這種情況怎么理解,不是設(shè)備對(duì)應(yīng)唯一Token嗎,若果設(shè)備改變了Token也會(huì)跟著改變吧。
樓主后續(xù)的文章沒(méi)有呢嗎
更新了哦~您可以點(diǎn)我頭像進(jìn)去~ ??
我是做APP推送的(假設(shè)用戶唯一標(biāo)識(shí)是手機(jī)號(hào)就是會(huì)員ID),有些疑惑的是作者說(shuō)了這么多設(shè)備號(hào)作為推送唯一標(biāo)識(shí),是不是大前提是與該設(shè)備綁定的手機(jī)號(hào)必須是我APP的有效用戶,其實(shí)在篩選目標(biāo)設(shè)備的時(shí)候,已經(jīng)在用手機(jī)號(hào)作為唯一標(biāo)識(shí)了,否則空記錄設(shè)備號(hào)是無(wú)意義的;那么整篇文章的核心思想是否可以理解為以用戶當(dāng)前有效手機(jī)號(hào)綁定的設(shè)備作為唯一標(biāo)識(shí)來(lái)推送呢?不論手機(jī)號(hào)改變,還是設(shè)備改變,僅掃描當(dāng)前有效手機(jī)號(hào)綁定的設(shè)備推送即可?
您說(shuō)的沒(méi)錯(cuò),假設(shè)APP是必須登錄會(huì)員賬號(hào)(如電商類APP),則使用會(huì)員ID作為唯一標(biāo)識(shí)更好。同時(shí)這個(gè)推送系列文章同樣適用,只是把我文中所述使用設(shè)備號(hào)替換成您使用會(huì)員賬號(hào)作為唯一標(biāo)識(shí)即可。感謝~
哇 寫(xiě)的很系統(tǒng)很專業(yè)!樓主在哪里工作呀?要跳槽嗎?。~
用戶‘主動(dòng)’告知其設(shè)備信息發(fā)生改變。
請(qǐng)問(wèn)這種“主動(dòng)”是對(duì)應(yīng)的什么場(chǎng)景呢
這種“主動(dòng)”體現(xiàn)在用戶打開(kāi)APP
因?yàn)榍岸诵枰选坝脩粼O(shè)備信息更變”這個(gè)消息告訴后端。
只能通過(guò)APP的請(qǐng)求或者相關(guān)進(jìn)程提交數(shù)據(jù)。
如果用戶不主動(dòng)打開(kāi)APP,除非APP自己在后臺(tái)運(yùn)行。
否則前端無(wú)法把這個(gè)消息告訴后端。
請(qǐng)問(wèn)在篩選有效用戶時(shí),您提到token失效的情況,這時(shí)避免向無(wú)效token建立推送任務(wù);
可是在文章1中不是說(shuō)使用設(shè)備作為唯一標(biāo)志么,所以是不是有些沖突。如果用設(shè)備作為唯一標(biāo)志,那么不就不用管token,直接按照設(shè)備推送就好了。
1.使用設(shè)備號(hào)作為唯一標(biāo)識(shí)。
2.當(dāng)token失效的時(shí)候,請(qǐng)將該token對(duì)應(yīng)的設(shè)備號(hào)標(biāo)記為“不可推送狀態(tài)”,當(dāng)這個(gè)設(shè)備號(hào)對(duì)應(yīng)的token發(fā)生變化后,再重新標(biāo)記為“可推送狀態(tài)”。
3.直接按照設(shè)備號(hào)推送也可以,如果避免向無(wú)效token推送有以下兩個(gè)好處:
1)避免因?yàn)閠oken失效導(dǎo)致推送任務(wù)被中斷,提高推送效率
2)在計(jì)算推送成功率的時(shí)候,無(wú)效token會(huì)導(dǎo)致推送成功率被降低,與實(shí)際不符。
請(qǐng)問(wèn)一下。如果設(shè)備改變,Token改變,該如何判斷該用戶使用了新設(shè)備?
如果有會(huì)員ID(登錄)功能,可以通過(guò)會(huì)員ID綁定設(shè)備。當(dāng)會(huì)員在新的設(shè)備登錄后即可知道。
如果沒(méi)有會(huì)員ID,可以尋找是否有與網(wǎng)站相關(guān),且可標(biāo)識(shí)用戶的憑證替代會(huì)員ID實(shí)現(xiàn)。
如果都沒(méi)有,那么相當(dāng)于一個(gè)新用戶,很難關(guān)聯(lián)起來(lái)。即使通過(guò)對(duì)比兩個(gè)設(shè)備的行為相似度,仍存在準(zhǔn)確度和成本過(guò)高的問(wèn)題。
加油 等你更
已經(jīng)更到第七篇了哦
http://m.codemsi.com/user-research/1413267.html
感謝支持~~ ??
寫(xiě)的很棒啊,感覺(jué)學(xué)到好多。加油加油 ??
感謝支持~~ ??
??
??