消息推送項(xiàng)目實(shí)操經(jīng)驗(yàn)分享
編輯導(dǎo)語:消息推送功能是App的基礎(chǔ)功能之一,能在業(yè)務(wù)進(jìn)程發(fā)生變化時(shí)及時(shí)通知用戶,提升用戶體驗(yàn);也能促進(jìn)用戶活躍,提升App基礎(chǔ)數(shù)據(jù)指標(biāo)。在這篇文章里,作者總結(jié)了關(guān)于消息推送項(xiàng)目的經(jīng)驗(yàn),希望能給你帶來收獲。
由于筆者身處行業(yè)的特殊性,消息推送項(xiàng)目在經(jīng)歷了一系列波折之后終于上線,感慨萬千之余,將項(xiàng)目上線的經(jīng)驗(yàn)進(jìn)行總結(jié),希望能給需要的小伙伴提供幫助。
一、需求分析
消息推送功能是App的基礎(chǔ)功能之一,一方面,在業(yè)務(wù)進(jìn)程發(fā)生變化時(shí)及時(shí)通知用戶,提升用戶體驗(yàn);另一方面,推送運(yùn)營類消息可促進(jìn)用戶活躍,提升App基礎(chǔ)數(shù)據(jù)指標(biāo)。
結(jié)合筆者所負(fù)責(zé)的App的實(shí)際情況,在需求池眾多嗷嗷等著上線的項(xiàng)目中,消息推送項(xiàng)目具有較高優(yōu)先級(jí)。
二、成本分析
筆者負(fù)責(zé)的App可以投入該項(xiàng)目的開發(fā)團(tuán)隊(duì)連視覺加測(cè)試總共不足10人,服務(wù)器資源對(duì)公司來說是較大一筆開支。
且消息推送內(nèi)容的風(fēng)控處理、消息防重復(fù)推送機(jī)制等又需要比較深入的研究,公司對(duì)上線時(shí)間也有一定的要求,從性價(jià)比的角度考慮,想自己去打通各設(shè)備廠商進(jìn)行消息推送的方案顯然投入產(chǎn)出比極低。
因此在與領(lǐng)導(dǎo)建議之后,最終我們選擇采購第三方服務(wù)商的消息推送服務(wù)。
第三方服務(wù)商的消息推送服務(wù)有收費(fèi)版和免費(fèi)版的,原先App已接入過免費(fèi)版的服務(wù),但接入時(shí)間較早,圖文消息等功能均未面對(duì)我們App開放,且免費(fèi)版共用推送通道,難以滿足數(shù)百萬用戶的運(yùn)營推送需求,因此確認(rèn)采購收費(fèi)版本的消息推送服務(wù)。
三、風(fēng)險(xiǎn)分析
1. 合規(guī)性風(fēng)險(xiǎn)
2021年11月1日,《個(gè)人信息保護(hù)法》正式實(shí)施,對(duì)App及其使用的第三方SDK、第三方接口等采集使用的用戶信息進(jìn)行嚴(yán)格的規(guī)定要求。
這邊梳理出以下幾個(gè)合規(guī)性方面的實(shí)操建議供大家參考:
1)協(xié)議保障
市面上第三方消息推送服務(wù),往往會(huì)采集使用和分析客戶的用戶信息。因此采購第三方消息推送服務(wù)時(shí),建議在合同中約束采集數(shù)據(jù)的歸屬問題、明確數(shù)據(jù)安全、數(shù)據(jù)合規(guī)方面的責(zé)任歸屬。
可能有的第三方消息推送服務(wù)商會(huì)給你一份模板合同,說公司合同都這么簽的。實(shí)際上作為消費(fèi)者,我們?cè)诤炇鸷贤矫娴脑捳Z權(quán)必然是有的,該堅(jiān)持的要堅(jiān)持,如果說服不了你,銷售為了拿下你這一單,他會(huì)自己在公司內(nèi)部解決領(lǐng)導(dǎo)和法務(wù)的問題。
2)關(guān)閉安卓設(shè)備的?;顧C(jī)制
安卓設(shè)備消息推送的?;顧C(jī)制,不滿足個(gè)保法的要求,若采購第三方消息推送服務(wù),建議要求服務(wù)商關(guān)閉相關(guān)功能。
?;顧C(jī)制是安卓特有的,開啟保活機(jī)制的App只要有一個(gè)在線,就能夠喚起其他App。
優(yōu)點(diǎn)是只要你堅(jiān)持推送消息,用戶沒打開App的情況下App也會(huì)運(yùn)行,可以把用戶活躍數(shù)據(jù)刷好看點(diǎn),對(duì)于初創(chuàng)公司可能是能快速見效的促活手段,缺點(diǎn)是存在合規(guī)性風(fēng)險(xiǎn)。
暫未能確定第三方安全保障機(jī)構(gòu)能否將安卓保活的情況檢測(cè)出來(如果能,那么工信部網(wǎng)信辦就一定能),但是對(duì)于移動(dòng)終端的深度用戶或者從業(yè)者,在使用過程中能觀察出App是否啟用了安卓?;顧C(jī)制。如所處行業(yè)比較敏感,建議能關(guān)則關(guān)。
3)SDK收集、使用信息的確認(rèn)
首先是按照個(gè)保法要求,盡到監(jiān)督義務(wù)。
目前中小型公司缺乏對(duì)第三方SDK收集使用數(shù)據(jù)方面的技術(shù)監(jiān)控能力,因此建議與第三方消息服務(wù)提供商確。
目前使用的SDK版本采集使用了用戶的哪些信息,最好以書面的形式提供材料,或與對(duì)方確認(rèn),是否完全以SDK的隱私政策為準(zhǔn),以證明己方已盡到監(jiān)督的義務(wù)。
如公司行業(yè)比較敏感且有一定預(yù)算,可采購第三方數(shù)據(jù)安全保障機(jī)構(gòu)的檢測(cè)服務(wù)進(jìn)行檢測(cè)。
普通公司與第三方消息推送服務(wù)商溝通確認(rèn)后在隱私政策中披露,并在己方App的隱私政策中闡述以SDK服務(wù)提供商的隱私政策為準(zhǔn),在當(dāng)前個(gè)保法推進(jìn)階段基本可滿足SDK信息披露的要求。
其次需要關(guān)注SDK的版本,根據(jù)個(gè)保法推進(jìn)的情況來看,不少第三方消息推送服務(wù)商應(yīng)該在2021年推出了新的SDK版本,減少了敏感信息的收集使用。
同理可檢查App使用的其他SDK是否也有類似的更新,如有,建議全面更新SDK版本,盡可能規(guī)避合規(guī)性風(fēng)險(xiǎn)。
4)消息推送
主要是三部分內(nèi)容。
一是權(quán)限管理,市面上App主要管理權(quán)限包括:
- 手機(jī)自帶的消息推送設(shè)備權(quán)限,就是一般App打開之后會(huì)普遍詢問的權(quán)限,在20年11月之前的調(diào)研中發(fā)現(xiàn),也有的App在某些設(shè)備機(jī)型是默認(rèn)打開消息推送權(quán)限的。
- 分類消息的推送權(quán)限,支持用戶按照消息分類選擇性接收消息推送。
- 分類消息的提醒權(quán)限,支持用戶按照消息分類選擇接收但不對(duì)消息進(jìn)行通知欄、未讀消息小紅點(diǎn)的提醒等。
- 按照個(gè)人特征進(jìn)行個(gè)性化推送的權(quán)限,在個(gè)保法推行之前市面上相關(guān)的產(chǎn)品方案已經(jīng)比較成熟,保持和大家方案一致即可。
二是推送頻次,根據(jù)個(gè)保法的要求,原則上不應(yīng)頻繁推送打擾用戶。
目前暫未發(fā)現(xiàn)有關(guān)部門通報(bào)哪家產(chǎn)品消息推送過于頻繁打擾到用戶的,大家酌情控制推送頻次即可。
三是推送內(nèi)容,主要參考材料為《網(wǎng)絡(luò)信息內(nèi)容生態(tài)治理規(guī)定》。正常業(yè)務(wù)推進(jìn)的時(shí)候一般不會(huì)犯這種敏感又低級(jí)的錯(cuò)誤,但是實(shí)操方面,各App測(cè)試消息推送發(fā)生生產(chǎn)事故的案例確實(shí)不少……
所以一是提醒大家做好流程管理和賬號(hào)權(quán)限管理,專人專事,減少出錯(cuò)機(jī)會(huì);二是在第三方消息推送服務(wù)商的后臺(tái)可配置相關(guān)敏感詞,消息提送時(shí)可直接過濾帶有敏感詞的推送內(nèi)容。像黃賭毒之類的敏感詞,一般第三方消息推送服務(wù)商會(huì)自帶風(fēng)控過濾機(jī)制。
2. 其他風(fēng)險(xiǎn)
我們?cè)谕七M(jìn)項(xiàng)目的時(shí)候主要關(guān)注接口并發(fā),不過因?yàn)榈谌较⑼扑头?wù)商的能力已經(jīng)比較成熟,確實(shí)也沒辦法實(shí)現(xiàn)可驗(yàn)證該說法的壓測(cè),所以對(duì)基礎(chǔ)能力這邊僅做了風(fēng)險(xiǎn)性的評(píng)估。
此外,關(guān)于消息存儲(chǔ)方面,需要考慮到消息在服務(wù)器存儲(chǔ)多久、消息推送量大概多久等問題,需要根據(jù)App的實(shí)際情況與開發(fā)溝通后確定需求和資源。
四、實(shí)操過程
1. 了解消息推送的實(shí)現(xiàn)原理
在我們研究消息推送實(shí)現(xiàn)原理之前,首先需要明確,我們通常所指的消息推送是什么。
1)通知欄消息(PUSH)
一般我們收到消息時(shí),App頂部會(huì)彈出消息,然后在設(shè)備的通知欄可查看未點(diǎn)擊的消息。這種消息我們定義成通知欄消息,也就是一般大家所說的消息PUSH。
①iOS:實(shí)現(xiàn)消息推送是最簡(jiǎn)單的,不論App是在線狀態(tài)還是離線狀態(tài),消息推送至iOS的APNS服務(wù)器,APNS再根據(jù)設(shè)備標(biāo)識(shí)推送至指定設(shè)備,用戶即可接收到消息。
大致鏈路為:業(yè)務(wù)系統(tǒng)(發(fā)起推送)——第三方消息推送服務(wù)商的服務(wù)器(推送邏輯控制、推送下發(fā))——蘋果APNS服務(wù)器——指定用戶設(shè)備。
②安卓:安卓因?yàn)閺S商眾多,廠商能力不同,所以實(shí)現(xiàn)方式也不一致。
安卓大廠如華為、小米、VIVO、OPPO,和iOS實(shí)現(xiàn)邏輯和效果基本一致,我們稱之為消息推送通過廠商通道推送。
但是需要申請(qǐng)開發(fā)者賬號(hào)并綁定App,在開放平臺(tái)開通廠商通道推送的權(quán)限。
這類廠商機(jī)型支持在線離線狀態(tài)的消息推送。消息推送大致鏈路為:業(yè)務(wù)系統(tǒng)(發(fā)起推送)——第三方消息推送服務(wù)商的服務(wù)器(推送邏輯控制、推送下發(fā))——廠商服務(wù)器——指定用戶設(shè)備。
像一些小眾手機(jī)的安卓廠商,不具備廠商通道推送能力,需要依賴于App的在線狀態(tài)。只有在服務(wù)器能夠保持鏈接狀態(tài)的時(shí)候,設(shè)備才能接收到通知欄消息。
消息推送大致鏈路為:業(yè)務(wù)系統(tǒng)(發(fā)起推送)——第三方消息推送服務(wù)商的服務(wù)器(推送邏輯控制、推送下發(fā))——指定用戶設(shè)備。
離線狀態(tài)且未開通安卓設(shè)備?;顧C(jī)制的時(shí)候,設(shè)備終端是無法收到消息的。
順便提一下,如果消息下發(fā)時(shí),App離線,消息可根據(jù)需求配置保存的時(shí)間,如在保存的時(shí)間范圍內(nèi)App打開變?yōu)樵诰€狀態(tài),此時(shí)第三方消息推送服務(wù)商會(huì)將消息重新下發(fā)進(jìn)行推送。
感興趣的小伙伴可網(wǎng)上搜索“消息推送實(shí)現(xiàn)原理”了解更多。
2)消息中心的消息
有一個(gè)大坑,在了解消息推送的原理之前,筆者一直以為消息是推送到消息中心的,直到自己在第三方消息推送服務(wù)商的平臺(tái)嘗試推送消息,發(fā)現(xiàn)消息中心壓根收不到消息……
實(shí)際上消息中心的消息一般處理方式都是保存在自家的服務(wù)器端的,進(jìn)入消息中心的時(shí)候去服務(wù)器端拉取數(shù)據(jù)。
所以通過第三方消息推送服務(wù)商的平臺(tái)發(fā)的消息直接發(fā)到設(shè)備,消息中心根本查不到數(shù)據(jù)。
理論上消息發(fā)到客戶端可以讓客戶端做一下保存,但是實(shí)際卸載或者清除緩存之后,歷史消息就完全沒有辦法查看到了?;贏pp需要對(duì)消息進(jìn)行留存的需求,該分支方案未再深入進(jìn)行研究。
2. 選擇第三方服務(wù)商、進(jìn)行商務(wù)談判
1)服務(wù)商選擇標(biāo)準(zhǔn)
客觀來說,如果沒有在多家公司實(shí)施多個(gè)同類項(xiàng)目的經(jīng)驗(yàn),壓根是不知道哪家第三方服務(wù)商更好的。所以我們明確目標(biāo)——第三方服務(wù)商的產(chǎn)品和服務(wù)能夠滿足我們的要求即可,并不一定需要業(yè)內(nèi)最好。
我個(gè)人選擇服務(wù)商,主要參考以下標(biāo)準(zhǔn):
- 服務(wù)商的行業(yè)經(jīng)驗(yàn):越久深耕的,一般產(chǎn)品越成熟。
- 服務(wù)商的行業(yè)口碑:一般去知乎上就能看到,不過也有水軍,但是有一家大家都知道是水軍知乎都在罵水軍和罵他家產(chǎn)品的也是挺離譜的。需要自己判斷,沒人說好的未必不好,有人說好的未必真的好。順便互聯(lián)網(wǎng)群多一點(diǎn),去群里吼一聲問問大家,有沒有此類項(xiàng)目實(shí)施經(jīng)驗(yàn)、服務(wù)商產(chǎn)品和服務(wù)如何,基本就可以得出自己的判斷了。
- 商務(wù)對(duì)接感受:如果對(duì)接期間商務(wù)讓你覺得不專業(yè)、有顧慮,那基本建議不要考慮了,除非已經(jīng)鐵了心就決定是這家了。合作洽談階段如果問題都沒辦法得到順暢的解決,那如何能指望付完錢之后對(duì)方優(yōu)質(zhì)的服務(wù)能力呢?
根據(jù)以上標(biāo)準(zhǔn),我選擇的服務(wù)商,在施行項(xiàng)目對(duì)接時(shí),基本能做到快速回復(fù)和要求的滿足,售后問題的對(duì)接也順暢。
2)商務(wù)談判
確認(rèn)好意向服務(wù)商之后,就要進(jìn)行商務(wù)談判,確認(rèn)服務(wù)和最終報(bào)價(jià)了。
因?yàn)閭€(gè)人有在SaaS公司從業(yè)的經(jīng)歷,所以我很明確的一點(diǎn)是:像消息推送這種標(biāo)準(zhǔn)化的產(chǎn)品,成本主要在前期的研發(fā)上,后面每增加一個(gè)新的客戶,所投入的成本基本都是邊際效應(yīng)遞減的。
這種情況下,銷售為了業(yè)績,基本在定價(jià)方面都是比較自由的,也就是同一個(gè)產(chǎn)品,賣給A客戶可能是十幾萬,賣給B客戶可能是幾十萬。
所以如何能知道對(duì)方的價(jià)格底線呢?這種情況建議:
- 多家服務(wù)商對(duì)接,了解業(yè)內(nèi)定價(jià)范圍,并通過自己作為價(jià)格敏感性的客戶,讓商務(wù)的報(bào)價(jià)“卷”出一個(gè)盡可能的最低價(jià)。
- 群里問問其他小伙伴。
處于為公司省錢的立場(chǎng),我在多輪談判后,把價(jià)格壓到了首次報(bào)價(jià)的1/4不到,完成了服務(wù)的采購。
不過價(jià)格方面是否需要壓到盡可能低,大家可以根據(jù)自己面臨的實(shí)際情況評(píng)估。
3. 產(chǎn)品需求設(shè)計(jì)
這里沒什么好說的,按部就班進(jìn)行前后臺(tái)功能設(shè)計(jì)即可。
稍微復(fù)雜一點(diǎn)的是需要理清App外未讀消息通知、消息中心、消息分類未讀消息的邏輯以及各權(quán)限的控制問題。
4. 需求評(píng)審和實(shí)現(xiàn)方案評(píng)審
在大公司,一般技術(shù)實(shí)現(xiàn)方案會(huì)由技術(shù)負(fù)責(zé)人負(fù)責(zé),產(chǎn)品經(jīng)理是不用管技術(shù)實(shí)現(xiàn)的。
但是因?yàn)楣P者的公司沒有技術(shù)負(fù)責(zé)人的角色,因此需要筆者在進(jìn)行需求方案評(píng)審時(shí)同步與開發(fā)團(tuán)隊(duì)確認(rèn)具體的技術(shù)實(shí)現(xiàn)方式。
小公司的產(chǎn)品經(jīng)理有的時(shí)候也必須對(duì)技術(shù)方案進(jìn)行把控,好處是能多了解一些技術(shù)知識(shí),更好地把控項(xiàng)目推進(jìn);壞處是人的精力畢竟是有限的,主要看公司需求。
5. 測(cè)試用例評(píng)審
正常組織開發(fā)和測(cè)試進(jìn)行用例評(píng)審,根據(jù)測(cè)試用例再一次與開發(fā)和測(cè)試確認(rèn)需求宣講想表達(dá)的信息是否到位,并確認(rèn)測(cè)試提供的用例,是否盡可能覆蓋了全部場(chǎng)景。
6. 項(xiàng)目上線
完成開發(fā)、清掉所有bug之后,產(chǎn)品走一遍主流程。找開發(fā)評(píng)估一下安全風(fēng)險(xiǎn)和性能風(fēng)險(xiǎn),沒有問題,發(fā)布生產(chǎn)環(huán)境,項(xiàng)目就上線了。
7. 項(xiàng)目復(fù)盤
1)對(duì)業(yè)務(wù)的支撐和數(shù)據(jù)表現(xiàn)
項(xiàng)目上線后沒多久,公司進(jìn)行活動(dòng)推廣,正好用上了我們的功能……還算是實(shí)現(xiàn)了對(duì)業(yè)務(wù)的支撐吧。
因?yàn)轫?xiàng)目時(shí)間緊,我們沒有做數(shù)據(jù)統(tǒng)計(jì)相關(guān)的功能,只使用第三方消息推送服務(wù)商的平臺(tái)進(jìn)行查看發(fā)送、送達(dá)、打開的數(shù)據(jù)。
實(shí)際對(duì)業(yè)務(wù)的促進(jìn)作用,沒有很多直觀的數(shù)據(jù)可以展示出來。目前消息推送對(duì)業(yè)務(wù)的支撐數(shù)據(jù)需求清單已經(jīng)列出,預(yù)計(jì)在迭代的版本進(jìn)行統(tǒng)計(jì)。
2)項(xiàng)目推進(jìn)周期復(fù)盤
原則上如果筆者沒有死磕,希望找到業(yè)內(nèi)盡可能好的服務(wù)商談到盡可能優(yōu)惠的價(jià)格,在采購階段的時(shí)間應(yīng)該可以省個(gè)半周時(shí)間。
而最終的結(jié)果是,雖然談到了筆者所認(rèn)為的業(yè)內(nèi)盡可能好的服務(wù)商和盡可能優(yōu)惠的價(jià)格,但是公司基本不care,這點(diǎn)值得反思。
以上是個(gè)人對(duì)消息推送項(xiàng)目推進(jìn)的實(shí)操和個(gè)人理解,如有不正確的,歡迎大家指出、溝通討論。
最后,特別感謝獅廠的前同事提供的建議和幫助。
本文由 @胖大星 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議。
你好,想了解下上線后達(dá)到預(yù)期,那大致的觸達(dá)率、點(diǎn)擊率是在什么范圍呢
使用第三方推送平臺(tái),如果是在推送平臺(tái)發(fā)的內(nèi)容,服務(wù)商也是有接口可以把信息發(fā)給你的服務(wù)器,這樣你在消息中心就可以保存推送的內(nèi)容呈現(xiàn)給用戶看。
不過比較建議自己搭建一個(gè)推送管理后臺(tái),通過接口觸發(fā)推送平臺(tái)。這樣可以在自己的平臺(tái)做更多的用戶篩選和一些自定義需求的處理。
哥,加個(gè)聯(lián)系方式,問你一寫對(duì)接細(xì)節(jié)
請(qǐng)問筆者最后用的哪家呀
極光
筆者最后用的哪家第三方呀
極光
受益頗多
感謝作者分享?。「韶洕M滿!對(duì)我來說真的很有用呢!??!
這個(gè)分析很是全面,不過說到復(fù)盤,感覺有時(shí)候自己在盲目復(fù)盤,復(fù)盤之后沒有很好的反饋!
復(fù)盤看目的。主要是回答,項(xiàng)目上線前的目的是否實(shí)現(xiàn),實(shí)現(xiàn)到什么程度,為什么上線后是這個(gè)結(jié)果(不管好的壞的),我哪些環(huán)節(jié)可以做的更好對(duì)我后面推進(jìn)項(xiàng)目有幫助,哪些環(huán)節(jié)做的不到位可能影響了項(xiàng)目的質(zhì)量或者進(jìn)度等等。
如果有可能,可以帶著團(tuán)隊(duì)小伙伴一起復(fù)盤,但是目的得清楚,不是翻舊賬論功過,僅僅是為了做的更好。
厲害
真不錯(cuò)