成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

多推送 SDK 的方案中,我們還需要思考什么?

開發 開發工具
本文就對之前的多推送 SDK 的方案,做一個補充,希望讓你跟全面的了解到你在做什么,需要思考什么?

 [[200506]]

一、前言

前兩天推送了一篇文章,講解的如何集成多 SDK 推送的方式,共享系統推送通道,來提高推送的送達率。但是在實際操作的時候,還是有一些地方需要被注意到,并延伸思考。

本文就對之前的多推送 SDK 的方案,做一個補充,希望讓你跟全面的了解到你在做什么,需要思考什么?

還不了解什么是多推 SDK 送方案的,可以先看看之前的文章:《來自悅跑圈的多推送 SDK 方案 — MixPush》

二、什么是多 SDK 推送方案

首先需要了解到,什么是多 SDK 推送方案。在 Android 的推送服務的市場中,存在多家提供推送解決方案的服務商。例如:極光、個推、小米、魅族、華為 等。

而這眾多的推送方案中,又可以被分為兩類:

1、廠商系統級推送

有自己的硬件設備以及與之匹配的定制系統。對于這類系統級的推送,優勢在于,一般是走的系統推送服務,可以做到送達率更高,更穩定,基本上可以無視你的 App 是否運行。類似于 iOS 下,提供的系統推送服務。但是劣勢也非常的明顯,在非該系統的設備上,送達率并不高。比較有代表的就是:小米(MIUI)、魅族(Flyme)(送達率可以到 90% )。華為據我了解到的情況,本身系統推送服務有問題,所以方案里也不推薦使用。

2、第三方推送

純粹的以第三方服務的形式存在。因為沒有系統推送通道的支持,本身沒有那么多優勢,所以它為了提高送達率,會做更多的努力,在不同的系統上也會做不同的支持和適配,這個是優勢也是劣勢。因為不依賴系統推送服務通道,這樣在不同的系統中,送達率并不會差別太多。比較有代表就是:個推、極光(送到率可以到 25%)。

這樣比較有優勢的多 SDK 推送的方案誕生了,在項目內集成多家推送 SDK,在存在系統級推送服務的設備上,注冊使用系統級的推送 SDK ,而在不存在系統級推送服務的設備上,直接使用第三方推送(一般選一個第三方推送即可,本文方案里選的 個推 )。這樣能保證存在系統級推送服務的設備送達率較高,而不存在系統級推送服務的設備上,送達率也不至于太低。

需要注意的是,雖然在項目內,集成了多個 App 推送的服務,但是會根據機型和系統,只對一個推送服務進行注冊,也就是同時只保持一個推送服務的有效注冊。這服務端就無需區分機型,直接對所有推送服務商的服務,發布推送即可。

如下圖:

三、那么有什么缺陷嗎?

3.1 Apk 體積會大

按現有廠商(小米、魅族)+ 第三方(個推)的這種組合方案,一般也需要集成 至少 3 家推送 SDK 。正常來說,一家的 SDK 大概在 400KB 左右,當然正常打包下來,應該會更少一些。

不過哪怕就算是少一些,也會增加大約 1MB 左右。如果對于 Apk 本身已經達到二三十 MB 的 App 而言,其實影響并不大。但是如果本身只有幾 MB 的 App ,增加 1MB 其實就需要掂量一下了。

本身維護過一個總體積不到 1MB 的 App ,基本上任何增大體積的 SDK ,都是被禁止的。

3.2 依然需要注冊各種服務

雖然在代碼層面,會根據不同的機型,注冊不同的推送服務。但是哪些不被注冊的推送 SDK 依然是需要在 AndroidManifest.xml 注冊組件的。

就以個推為例,它會需要在 AndroidManifest.xml 中注冊一個推送核心的 Service ,被標記為 android:exported=true ,這也是為什么有說法,推送服務會相互喚醒。也從一個側面來說,對于第三方推送服務,市場占用率決定了送達率。

這樣,可能會導致我們并沒有用到該推送服務,但是它卻被拉活運行在后臺。例如在小米設備上,本身主動注冊的是使用小米推送,但是個推的服務,依然可能會被其他集成了個推的 App 喚醒,這些都是不受我們控制的。

不過好在現在一些國產定制系統和原生 6.0 以上的系統中,相互喚醒已經被禁止掉了,所以這樣相互喚醒的問題,應該會有所緩解。

四、能不能做的更好一點

既然一些系統級的推送服務中,主要是依賴對應的系統,例如小米推送就需要依賴 MIUI 。這樣我們就可以簡單的理解為,使用小米應用市場的設備,都是運行的 MIUI 。那么,我們也可以對不同的市場渠道,利用 Gradle 打出只集成了該推送 SDK 的 Apk ,對小米市場的渠道包,只集成小米推送SDK ,其他都不集成。這樣不光 Apk 的體積會有說減少,并且也不存在被其他推送服務相互拉活的情況。

當然,對于一些第三方應用市場的渠道包,還是需要集成多個推送 SDK 的。

但是這樣也會引發一些其他的問題,例如,一些熱更新的算法需要有基準包,來計算差量生成差量包,用于熱更新,如果使用 Gradle 對不同的推送打出不同的渠道 Apk ,他們本身的代碼已經不一樣了,就會導致如果需要使用熱更新的話,基準包就會有多個,復雜度也就提高了,維護成本自然增大了。

五、小結

以上就是我對多推送 SDK 集成的一些思考。實際上最簡單的方式,依然是之前文章中,介紹的方案,直接集成多推送 SDK ,不需要分包。

最簡單的方案也是最穩定的方案,但是這并不影響我們思考的跟多一些。

【本文為51CTO專欄作者“張旸”的原創稿件,轉載請通過微信公眾號聯系作者獲取授權】

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

2024-02-19 00:12:00

模型數據

2018-09-20 22:04:01

2022-03-09 09:34:19

智能汽車技術

2020-04-26 09:32:13

物聯網安全技術

2018-09-12 18:10:25

數字體驗數字性能數字體驗管理

2023-09-12 14:02:30

數組vector

2021-03-31 13:20:02

智慧城市物聯網5G

2024-01-09 17:58:47

2017-05-09 14:21:15

4G5G互聯網

2023-10-24 15:15:26

HTTPWebSocket

2013-04-12 09:38:36

網絡設備IPv6網絡架構

2020-12-15 06:57:24

java服務器

2015-10-19 11:06:37

2021-10-12 18:48:07

HTTP 協議Websocket網絡通信

2023-06-01 07:50:42

JSDocTypeScriptAPI

2020-12-11 07:39:37

RPC MQ架構

2015-03-03 14:52:52

Google+

2015-03-03 10:24:51

Google+

2024-02-22 10:34:00

NULLC++nullptr

2024-02-18 12:39:15

C++autodecltype
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线国产一区 | 精品国产不卡一区二区三区 | 欧美日韩视频在线第一区 | 久久久夜夜夜 | 狠狠色综合久久婷婷 | 操亚洲| 三级黄色片在线观看 | 国产精品永久久久久 | 国产精品日韩欧美一区二区三区 | 国产激情一区二区三区 | 97av视频| 精品国产三级 | 一级一级一级毛片 | 在线看免费 | 国产精品久久影院 | 成人精品福利 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 国产高清视频在线观看播放 | 欧美日本一区 | 精品国产乱码久久久久久丨区2区 | 国产成人免费视频网站高清观看视频 | 午夜在线影院 | 国产高清视频在线 | 91精品国产色综合久久 | 亚洲免费在线观看视频 | 精品日韩一区二区三区 | 国产精品毛片一区二区三区 | 亚洲精品久久久久久首妖 | 久久噜噜噜精品国产亚洲综合 | 色在线免费视频 | 国产精品高清在线 | 久久久精品一区 | 日本a视频 | 亚洲二区在线 | 国产精品国产三级国产aⅴ原创 | 日韩精品一区二区三区在线观看 | 国产视频一区二区 | 激情网站| 水蜜桃亚洲一二三四在线 | 国产精品一区二 | 久久精品91久久久久久再现 |