国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[點晴永久免費OA]手機APP新信息推送技術(shù)介紹

admin
2023年3月20日 9:7 本文熱度 1167
:手機APP新信息推送技術(shù)介紹

推送

推送簡直就是一種輕量級的騷擾方式

自從有了推送,各個公司基本上都在使用推送,這確實是一個比較好的提醒方式,Android較iOS強的一個部分,也就是在于Android的Notification。Google教育我們利用好Android的通知模塊,做更多友好的交互,可這句話,翻譯成中文,不知不覺,就變成了在Notification中推送各種廣告,而且僅僅就是一些廣告,Notification各種牛逼的功能,完全不需要,這也違背了Google設(shè)計Notification的初衷。

更關(guān)鍵的是,現(xiàn)在隨便找一款A(yù)pp,沒有推送的真是鳳毛麟角,更可惡的是,做外賣的App給我推送奧運新聞,一條新聞十幾個App推送,以至于現(xiàn)在很多用戶都非常反感各種推送廣告,就我本人而言,基本上會禁用所有廣告類的App的推送。

本人非常反感推送,借用王思聰?shù)囊痪湓挘琗XX App天天給我推送各種廣告,還TM是自己做的推送,真是絕了。

推送方案

輪詢

輪詢是最簡單的與服務(wù)器保持通信的方式,即循環(huán)向服務(wù)器通信。這個方案的特點就是通信由客戶端主動發(fā)起,你需要自己實現(xiàn)輪詢消息隊列、頻率等等參數(shù),在功耗和效果間做權(quán)衡,類似于TCP的短連接。

SMS

這個其實就是借助短信來實現(xiàn)信息的展示,只不過把短信內(nèi)容展示到了Notification中,這個方案,到達率確實高,畢竟短信是比較可靠、穩(wěn)定的,但劣勢也很明顯,就是成本很高,而且在Android平臺上,短信的權(quán)限比較開放,容易被劫持。

長連接

長連接和前面提到的短連接,都是基于Socket連接的方式,他們的區(qū)別在與,短連接是每次數(shù)據(jù)傳輸完畢后就斷開連接,而長連接不會。所以,基于輪詢的方式,每次都要進行鏈路的連接,性能消耗更大,基于長連接的方式,就是對這點的改進。應(yīng)用一旦與服務(wù)器連接成功,并不會主動斷開連接,后面的通信都基于這個通道。目前大部分的推送服務(wù)都是基于長連接的推送,在后臺維護一個Service,維持應(yīng)用與服務(wù)端之間的TCP長連接。

推送方案

iOS

iOS這邊使用系統(tǒng)統(tǒng)一的APNs,所有推送消息都由蘋果的服務(wù)器進行下發(fā),同時,也由系統(tǒng)進行統(tǒng)一展示和處理。

GCM

與iOS一樣,Android同樣有一套內(nèi)置的推送方案,但很可惜的是,Google的服務(wù)在中國大陸無法使用,草了個蛋。

第三方推送服務(wù)

專業(yè)的第三方推送

  • 極光

  • 個推

  • 友盟推送

手機ROM廠商推送

  • 華為推送

  • 小米推送

BAT級別的全家桶

  • 阿里推送

  • 信鴿推送

  • 百度推送

關(guān)于第三方推送服務(wù)在各個App中的使用率,大家可以參考賈吉鑫的那篇文章,微信沒辦法貼鏈接。。。麻煩大家自己搜一下。

第三方推送注意

這些推送服務(wù)大同小異,基本上一家使用了一個新功能,另外幾家,也會很快推出這個功能,就例如之前比較火的,『共享推送通道進行App喚醒』這個技術(shù),友盟、個推推出后,很快其它推送服務(wù)商就支持了,所以開發(fā)者并不需要擔(dān)心哪一家推送功能比較強。

這里還需要說下現(xiàn)在的『推送喚醒』這樣一個功能,簡單的說,就是所有安裝了A推送的App,只要有一個還活著,就可以把其它安裝了A推送的App拉起來,從而提高推送的到達率。有些阿里系、百度系的App,被大家稱作『全家桶』,實際上就是因為這個原因,這個方式,確實能在一定程度上提高推送到達率,但另一方面,也破壞了Android生態(tài),增加了功耗,打亂了系統(tǒng)的清理策略。

另外,小米推送、華為推送,大家接入的原因可能很簡單,就是他們的手機市場占有率比較高,接入他們自家的推送,可以在一定程度上提高到達率,但需要注意的是,推送分為透傳和非透傳兩種方式,透傳即我們自己App處理推送消息,而非透傳,則是交給相應(yīng)的PushSDK處理,對于小米推送、華為推送來說,只有采用非透傳消息,到達率采用保證,而透傳消息,與其它推送并沒有什么區(qū)別,換句話說,小米手機、華為手機,只對非透傳的推送消息做了可靠性保證,但非透傳消息的展示格式非常固定、簡單,且不能自定義,這是一個很大的問題,這點應(yīng)該是很多開發(fā)者的誤區(qū)。

最后,很多推送服務(wù)都需要在Application中進行初始化,同時,各種被喚醒策略,又會拉起Application,導(dǎo)致推送進程的重復(fù),所以,這里經(jīng)常需要對進程名進行過濾,非主進程,不進行初始化。

自建推送服務(wù)

基本都是基于AndroidPN、MQTT、XMPP、長連接這些方式去實現(xiàn)的,自己搭建Push平臺服務(wù),一個最大的問題就是服務(wù)端的架構(gòu)設(shè)計,不僅成本高,而且效果不一定好,建議中小企業(yè)不要輕易嘗試。

推送名詞解釋

RegistrationID\ClientID

一般來說,類似這類ID都是用于唯一標(biāo)識應(yīng)用\用戶的,每個App在每臺手機上都會生成一個唯一ID。

RegistrationID\ClientID生成規(guī)則

Android平臺上因為國內(nèi)存在大量山寨設(shè)備,所以很多設(shè)備的IMEI、Mac地址、AndroidID 都有可能為空或者錯誤,所以不能單獨作為唯一標(biāo)識,需要將這些進行組合起來使用。

對于應(yīng)用卸載后RegistrationID的問題,很多PushSDK的策略是,生成一個DeviceID保存到本地存儲,應(yīng)用被卸載后如果被重新安裝,如果檢測到存儲里的DeviceID還在的話,就判定是同一個設(shè)備,不重新生成RegistrationID。

AppKey\AppID

這些Key基本都是用于驗證App的,每個包名對應(yīng)一個加密的Key。

透傳\非透傳

非透傳消息是指推送消息被PushSDK獲取并處理,透傳消息是指推送消息被PushSDK交給宿主應(yīng)用處理,非透傳消息通常只能設(shè)置一些固定的樣式,比較簡單,而透傳消息,可以由App自定義處理,比較靈活。

推送數(shù)據(jù)基礎(chǔ)

累計注冊

通過應(yīng)用使用的appid統(tǒng)計用戶注冊總量。

日在線用戶

通過應(yīng)用使用的appid統(tǒng)計當(dāng)天的在線用戶數(shù)。

活躍用戶

通過應(yīng)用使用的appid統(tǒng)計當(dāng)天在推送平臺激活過的用戶總數(shù)。

在線下發(fā)率

在線消息下發(fā)數(shù)/總下發(fā)數(shù)。

回執(zhí)率

消息回執(zhí)數(shù)(去重)/消息在線下發(fā)數(shù)。

到達率

到達數(shù)/實際下發(fā)數(shù)。

百日內(nèi)聯(lián)網(wǎng)用戶數(shù)(可推送用戶數(shù))

是指最近三個月內(nèi)有登錄過(設(shè)備與推送服務(wù)端建立長鏈接)的設(shè)備總數(shù),即有效可下發(fā)的用戶數(shù)。一般的推送服務(wù)端認(rèn)為,設(shè)備在100天內(nèi)沒有登錄請求,認(rèn)為該設(shè)備已經(jīng)失效,所以無需再次發(fā)送。

實際下發(fā)數(shù)

實際可推送設(shè)備數(shù)(在消息有效期內(nèi),有聯(lián)網(wǎng)并推送進程正常的設(shè)備,即消息有效期內(nèi)的在線下發(fā)數(shù)。消息有效期就是設(shè)置的離線時間)。

到達數(shù)

客戶端SDK接收到消息的設(shè)備數(shù)(通過統(tǒng)計客戶端SDK接收到消息后的回執(zhí)獲得)。

展示數(shù)

用自定義非透傳消息在用戶手機展示過的設(shè)備數(shù)。

點擊數(shù)

點擊通知欄消息的設(shè)備數(shù)。

推送數(shù)據(jù)分析

那么關(guān)于推送,大家實際上最關(guān)系的,就是『到達率』。那么這個到達率究竟怎么計算呢?

首先我們舉個例子來說明上面的這些數(shù)據(jù)背后的實際意義,例如,我們有一款A(yù)pp,有100w的下載量,每個App啟動后,都將上報給服務(wù)器一個唯一ID,所以,累計注冊量就是100w,也稱發(fā)送總量。

那么在服務(wù)端準(zhǔn)備發(fā)送推送的時候,當(dāng)前手機端推送進程還活著的,也就是說推送的長連接還健在的,就是在線設(shè)備,如果按天算,那么就叫日在線設(shè)備數(shù),我們假設(shè)這個數(shù)字是60w。

OK,推送發(fā)出去后,客戶端收到推送消息,并產(chǎn)生回執(zhí),代表完成了一次推送,假設(shè)這些完成推送的設(shè)備是55w,這個就是送達設(shè)備數(shù)。一般來說,只要設(shè)備在線,基本都能送達,所以這個數(shù)字和在線設(shè)備數(shù)非常接近,不接近的話,這個推送基本就有問題了,其中可能送不達的原因就在于網(wǎng)絡(luò)切換等導(dǎo)致長連接斷掉這類因素。

那么到這里,一般的推送服務(wù)商會使用送達設(shè)備數(shù)/在線設(shè)備數(shù)的方式來計算到達率,當(dāng)然,前面我們也說了,這個比例一定是很高的,如果保持長連接的設(shè)備都不能收到推送,那一定是有問題了。

而一般的到達率,應(yīng)該是送達設(shè)備數(shù)/可送達設(shè)備數(shù),也就是百日內(nèi)活躍的設(shè)備數(shù),這樣一除,這個比例一下子就小了很多,因為誰也不知道,這一百天內(nèi)曾經(jīng)活躍的用戶,第二天是不是就已經(jīng)把你卸載了。所以說,Android下統(tǒng)計推送的到達率一般都很低,而推送服務(wù)商宣傳的到達率都很高,這其實就是一個偷換概念的問題,我們說的是一般的到達率,而服務(wù)商宣傳的是在線到達率。

而且,這個到達率與iOS完全沒有可比性,因為iOS統(tǒng)一通過APNs來進行推送,且無法獲取到達回執(zhí),所以,iOS基本不存在到達率這一說法,如果有,幾乎也是100%,完全沒有意義,所以,如果哪一天有產(chǎn)品或者運營跟你說,為什么Android的到達率比iOS的到達率差這么多,請毫不客氣的砸它一斤蘋果。

Tag\Alias

Tag

Tag,或者叫標(biāo)簽,是用戶的一種屬性,在給某些用戶設(shè)置某類標(biāo)簽后就可以針對推送。比如給喜歡『編程』的人打上『編程』的標(biāo)簽,就可以只給他們精準(zhǔn)推送。

通常情況下,一個設(shè)備(在一個App里)可以設(shè)置多個標(biāo)簽。標(biāo)簽與別名類似,其對應(yīng)關(guān)系也是保存在推送服務(wù)器側(cè)的。

Alias

Alias,或者叫別名,是對已經(jīng)安裝某應(yīng)用的用戶取個別名進行標(biāo)識,在對該用戶消息推送時,就可以用此別名來進行推送。設(shè)置了別名后,推送時服務(wù)器端指定別名即可。推送服務(wù)器端來把別名轉(zhuǎn)化到設(shè)備ID來找到設(shè)備。

Tag和Alias他們的共同點在于,提供對用戶的精確推送。

推送原理

目前大部分的第三方推送服務(wù),都是基于長連接的推送方案,下面將對這個方式進行詳細(xì)講解。

NAT

首先,我們需要了解下一個網(wǎng)絡(luò)基本知識——NAT,即網(wǎng)絡(luò)地址轉(zhuǎn)換(Network Address Translation,NAT),這是因為IP地址是有限的,手機無論是通過路由器還是數(shù)據(jù)網(wǎng)絡(luò),都有一個內(nèi)網(wǎng)IP地址,同時,路由器上會維護一個外網(wǎng)IP地址,從而形成一個NAT路由表,即內(nèi)網(wǎng)IP地址:端口,以及對應(yīng)的外網(wǎng)IP地址:端口。這樣通過一層層封裝與解封裝,就達到了內(nèi)網(wǎng)與外網(wǎng)交換通信的方式。

NAT超時

由于NAT路由表的大小有效,所以一般路由都有NAT有效期,WIFI下,這個NAT有效期可能會比較長,而在數(shù)據(jù)流量下,運營商一般都會盡快更新NAT路由表,淘汰無效的設(shè)備,所以,在使用數(shù)據(jù)流量時,長連接經(jīng)常容易斷。

那么除了NAT路由表主動淘汰過期的設(shè)備之外,切換網(wǎng)絡(luò)環(huán)境和DHCP服務(wù)器租期到期,這些情況都有可能導(dǎo)致NAT路由表改變,從而造成長連接中斷。

心跳包

前面我們說了,現(xiàn)在的推送服務(wù)一般采用的是長連接的通信方式,而長連接會因為NAT路由表的更新而中斷,所以,客戶端會定時向服務(wù)端發(fā)送一個心跳包,來定期告知NAT路由表,我還活著,別殺我!這就是心跳包的作用——防止NAT路由表超時,同時檢測連接是否被斷開。

心跳包的心跳時間

既然心跳包的作用是防止NAT超時,那么就需要將心跳包的發(fā)送頻率設(shè)置為小余NAT超時的檢測頻率,而WIFI和數(shù)據(jù)流量下,對于NAT路由表的超時時間又是不一樣的,而且不同的網(wǎng)絡(luò)運營商的超時時間,甚至都不一樣,所以,一個比較好的方法就是根據(jù)設(shè)備當(dāng)前網(wǎng)絡(luò)環(huán)境,來動態(tài)的設(shè)置心跳時間。

注意,心跳包與輪詢是不一樣的,心跳包建立在長連接上,只要發(fā)送數(shù)據(jù)即可,而輪詢每次都是一個完整的TCP連接。

心跳包誰來發(fā)

既然需要定時任務(wù),那么就需要使用AlarmManager來作定時喚醒了,原因之前的文章有講過,是關(guān)于處理器喚醒的原因,這里就不贅述了,大家可以參考我之前的文章:

Android中的睡與不睡

進程保活

所謂進程保活,是指App希望盡可能的保證自己的App的推送進程能夠存活在后臺,以保證可以收到服務(wù)端的推送消息,因此,才出現(xiàn)了一大批關(guān)于進程保活的方式,例如NDK層的文件鎖,fork子進程、前臺服務(wù)、進程優(yōu)先級等等方式,然而,這些東西,實際上,都不能完全保證手機的進程管理策略放過你,特別是Android 5.0以后的系統(tǒng),Android對進程的管理更加嚴(yán)格,還有國內(nèi)的這些ROM層的修改,ROM想要殺你這個進程,你怎么做也沒有辦法,哦,除了白名單。所以,不要再花心思去找什么進程保活的黑科技了,好好做好應(yīng)用,提供用戶的使用黏性,才是最佳的保活,而對于一些產(chǎn)品、運營所謂的『為什么微信、QQ都可以保活』這樣的問題,我建議你回答它:『如果你能把產(chǎn)品做到微信、QQ那樣的數(shù)量級,我也能讓你活!』

推送整合方案

介于各種第三方推送與ROM推送的特點,我們目前采用的推送方案,名為『UniversalPushSDK』,即整合了多個不同的推送渠道,通過模板設(shè)計模式來進行整合,并向外暴露統(tǒng)一的接口,這種方式的好處在于UniversalPushSDK利用的各個不同推送特點,提高推送到達率,但是壞處在于,包的體積會大一些。例如,我們現(xiàn)在整合了『小米推送、極光推送、華為推送』,在系統(tǒng)啟動的時候,判斷當(dāng)前系統(tǒng),如果是小米系統(tǒng),則啟用『小米推送』,如果是華為手機,則啟用『華為推送』,其它的Android設(shè)備,則啟用『極光推送』,通過這種方式來設(shè)計我們自己的推送SDK,可以在一定程度上,利用好各個推送平臺的特性。

那么如果利用這種方式來設(shè)計SDK給到不同的App接入,就需要能夠?qū)?yīng)用的推送Key做到動態(tài)配置,這也是我們遇到的最大的一個問題,解決方法大家可以參考之前寫的一篇文章:

http://blog.csdn.net/eclipsexys/article/details/51283232

雖然我極力反對這種方案,我堅持認(rèn)為,做好App,提升用戶使用黏性,才是提升推送到達率的關(guān)鍵


該文章在 2023/3/20 9:07:19 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲av无码国产精品色午 | 久久精品人妻无码一区二区三区网 | 国精产品一二二线网站 | 韩国主播精品一区二区三区 | 中文无码妇 | 亚洲图片另类综合 | a级毛片在线观看 | 精品国际久久久久999波多野 | 亚洲全黄无码一级在线看 | 92看片淫黄大片一级 | 成人网站免费看黄a站视频 成人网站视频免费涩涩屋 成人网站在线进入爽爽爽 成人未删减H韩漫画网站 | 欧美日韩国产媒体在线观看 | 亚洲天堂在线观看完整版 | 国产成人精品综合久久久久性色 | 日本精品久久无码影院 | 中文字幕精品亚洲一区 | 亚洲欧美日韩中文字幕在线不卡 | 中文字幕无码乱码人妻系列 | 国产综合成人久久大片91 | 毛片线看免费观看亚洲欧美自拍一区 | 国产成人亚洲影院在线播放 | 精品视频在线观看久久直播锕你懂得 | 在线观看无码视频 | 久久久天堂国产精品女人 | 少妇做爰免费视频网站 | 国产精品亚洲ΑV天堂无码涩涩屋 | 国产艳福片内射视频播放 | AAA亚洲永久免费精 av潮喷大喷水系列无码 | 精品黑人一区二区三区 | 禁欲总裁被C呻吟双腿大张 禁止的爱6浴室吃奶中文字幕 | 少妇裸体性生交 | 97久久超碰中文字幕 | 日韩大片免费永久看nba | 四虎影在线 永久免费 | 国产麻豆xxxvideo实拍 | 亚洲av无一区二区三区久久 | 久久精品视频91 | 中文国产成人精品久久百度 | 国产美女自慰在线观看 | 色情综合另类图片 | 羞羞影院午夜男女爽爽影院网站 |