Android Push哪家強——分析豌豆莢1400個APP

背景

因爲國內 Android 生態百家爭鳴(其實TM就是混亂),各個手機廠家對 Android Rom 進行了深度定製,衍生出了各類 Android 系統。因爲國內沒法使用 Google GCM 服務,Push 消息沒法送達。再加上各個 Android Rom 對後臺的嚴苛管理,致使自建通道的長鏈接進程沒法正常存活,如極光推送、友盟推送在 oppo 和小米手機上也沒法作到及時推送。Android綠色聯盟看來現現在也期望不上。可是公司業務迫切須要Push,讓咱們作一個技術選型。爲了保持一個嚴謹的態度咱們爬取了豌豆莢商店14種分類,每種分類前100名的APP,分析看看常見的幾個push通道哪個是接入率最高的。(原本爬取的是APP排行榜前200名,結果發現阿里系的基本都是接入友盟,騰訊系是接入信鴿,這樣樣本太少分析不夠準確)android

獲取APP下載數據

咱們打開豌豆莢APP的分類,點擊影音播放分類 git

經過Charles抓包工具抓取數據
這樣就能夠獲得APP的具體數據了,因爲豌豆莢的request有一個 sign加密字段咱們沒法經過Python編寫自動請求腳本,因爲我也懶得研究這個加密的md5是怎麼來的,就直接把Charles的抓包response保存爲json文件放在相應的目錄,經過一個腳本去解析咱們須要的數據。 經過獲取APP json的 downloadUrl字段獲取下載連接下載全部APP。1400個所有下載完成以下:
`

分析APP

咱們經過apktool逆向工具解壓apk文件,而後檢索相應的特徵就能夠了,例如github

  • 極光推送的檢測->判斷AndroidManifest.xml中的關鍵字: cn.jpush.android.service.PushService
  • 個推的檢測->判斷AndroidManifest.xml中的關鍵字: com.igexin.sdk.PushService
    ......
  • OKHttp的檢測->文件存在publicsuffixes.gz或者smali/ smali_classes*/okhttp

這裏添加了一個OKHttp SDK的分析主要是做爲一個基準,看一個成熟的SDK會有多少的接入率。還有一個緣由是看看該分類的APP對網絡的依賴性是否比較大,好比系統工具分類下的APP顯然沒有新聞閱讀網上購物分類對網絡的依賴性大。
因爲apk文件被apktool解壓後文件會變得超級大,因此咱們只能逐個分類分析,每分析完一個分類刪除全部解壓文件後再分析下一個分類,最後再整合數據。(其實就是特麼窮逼,只能買得起256G的MAC,放不下這麼多數據=-=)
咱們經過Python csv將分析結果輸出爲csv文件,便於後面導入到Excel後進行圖形化數據分析。json

各類分類的分析結果

因爲在下載或者apktool解壓的過程當中可能有個別apk下載或者解壓失敗,咱們就直接跳過,由於個別樣本的錯誤並不會影響咱們總體數據的分析。 網絡

經過14種分類的數據橫向對比咱們得出一些結論:

  • 系統工具分類的APP對網絡的依賴性果真是最低的。好比一個文件管理APP要啥網絡權限
  • push的佔有率也能夠從側面反映一個分類行業的成熟度,如新聞閱讀網上購物成熟度較高
  • 育兒親子分類下面的APP成熟度最低,可是也是如今比較熱門的互聯網+行業。
  • 育兒親子分類下的極光推送明顯優點,這估計是他們主打的營銷方向,即新生和小型客戶。

彙總後分析結果

  • 咱們能夠看到在友盟、信鴿、極光和個推等這些第三方通道中,極光推送以極其微弱的優點領先。
  • 廠商通道中確實仍是華爲大佬第一,不太小米也不差。
  • 信鴿推送多是起步比較晚,數據相差其餘通道一大截。

其餘

  • 爲何沒有分析vivo和oppo通道?由於這兩個通道起步太晚,接入APP應該比較少,分析對比的意義也不是很大
  • 之後咱們技術選型須要採用某一個開源庫的時候是否是能夠先分析市場上APP的佔有率,再作決定?
  • 是否是能夠分析競品的佔有率?好比我是一個個推的員工,我分析極光和友盟的市場佔有率以及客戶名單,定向推銷。

項目地址

github.com/LitterSun/S…
第一次寫Python,簡直稀爛,請輕虐……工具

你們若是從數據中看到了什麼其餘的東西,歡迎評論留言!

相關文章
相關標籤/搜索