推送功能可以算是每個App的都會開發的基本功能了,服務端可主動向其用戶推送各類消息,結合精準的用戶畫像分析,給合適的用戶在合適的場景下推送合適的內容,大幅度提升消息點擊率、用戶活躍度和留存率。
推送把控不當適得其反,引起弊端,騷擾用戶,提高卸載率,過多的無價值內容,使用戶反感。
就這麼一個最基本的功能,讓無數Android開發噴血,叫罵呀!App被殺死後,它是接受不到第三方推送的,那怎麼辦呢?那就想辦法不被殺死了,嘗試各種方法,雙進程雙服務互拉起,播放無聲音樂,一像素等等,太流氓了,不可能做到保活的。Android系統越來越完善,權限限制也越來越大,第三方系統更是把控的很嚴格,真的太難了!!!
應該會羨慕iOS吧,推送證書一申請,接收方法一加入,ok了~~~
第三方系統收不到推送的消息
由於第三方 ROM 的管理軟件需要用戶手動操作
-
小米【 MIUI 】
- 自啓動管理:需要把應用加到【自啓動管理】列表,否則殺進程或重新開機後進程無法開啓
- 通知欄設置:應用默認都是顯示通知欄通知,如果關閉,則收到通知也不會提示
- 網絡助手:可以手動禁止已安裝的第三方程序訪問 2G/3G 和 WIFI 的網絡和設置以後新安裝程序是否允許訪問 2G/3G 和 WIFI 的網絡
- MIUI 7 神隱模式: 允許應用進行自定義配置模式,應用在後臺保持聯網可用,否則應用進入後臺時,應用無法正常接收消息。【設置】下電量和性能中【神隱模式】
-
華爲【 Emotion 】
- 自啓動管理:需要把應用加到【自啓動管理】列表,否則殺進程或重新開機後進程不會開啓,只能手動開啓應用
- 後臺應用保護:需要手動把應用加到此列表,否則設備進入睡眠後會自動殺掉應用進程,只有手動開啓應用才能恢復運行
- 通知管理:應用狀態有三種:提示、允許、禁止。禁止應用則通知欄不會有任何提醒
-
魅族【 Flyme 】
- 自啓動管理:需要把應用加到【自啓動管理】列表,否則殺進程或重新開機後進程無法開啓
- 通知欄推送:關閉應用通知則收到消息不會有任何展示
- 省電管理: 安全中心裏設置省電模式,在【待機耗電管理】中允許應用待機時,保持允許,否則手機休眠或者應用閒置一段時間,無法正常接收消息。
-
VIVO【 Funtouch OS 】
- 內存一鍵清理:需要將應用加入【白名單】列表,否則系統自帶的“一鍵加速”,會殺掉進程
- 自啓動管理:需要將應用加入 “i 管家”中的【自啓動管理】列表,否則重啓手機後進程不會自啓。但強制手動殺進程,即使加了這個列表中,後續進程也無法自啓動。
-
OPPO【 ColorOS 】
- 凍結應用管理:需要將應用加入純淨後臺,否則鎖屏狀態下無法及時收到消息
- 自啓動管理:將應用加入【自啓動管理】列表的同時,還需要到設置-應用程序-正在運行裏鎖定應用進程,否則殺進程或者開機後進程不會開啓,只能手動開啓應用
- 三星
- 內存一鍵優化:需要將應用加入【白名單】列表,否則系統內存優化後,會殺掉應用進程
試試接入各大廠商通道
Huawei PUSH(華爲推送服務)是華爲爲開發者提供的消息推送平臺,建立了從雲端到終端的消息推送通道。開發者通過集成華爲PUSH服務可以將最新信息即時通知用戶,構築良好的用戶關係,提升用戶的感知度和活躍度。
一、華爲推送服務開發準備必備步驟主要包括:
- 註冊認證成爲開發者
- 配置應用簽名
- 創建產品和應用
- 開通推送服務
- 獲取推送服務參數
- 下載SDK
- 集成工程
二、客戶端開發主要包括:
- 初始化Agent
- 申請PUSH Token
- 實現自定義廣播接收消息
- 註銷PUSH Token(可選)
- 是否接收PUSH通知欄消息(可選)
- 是否接收PUSH透傳消息(可選)
- 展示應用角標(可選)
三、服務端開發主要包括:
- 應用服務器獲取AccessToken
- 應用服務器發送PUSH消息
- 通過消息回執實現自定義推送(可選)
- 應用服務器發送應用角標(可選)
客戶端開發:使客戶端APP具備單條PUSH消息的發送和接收能力。
STEP1、開發者的APP集成HMS SDK,調用getToken接口從PUSH服務器獲取到PUSH Token。
STEP2、開發者的APP對於獲取到的PUSH Token需要上報到開發者自己的服務器APP Provider Server上。
服務端開發:實現APP服務器批量發送通知消息。
STEP3、開發者利用服務器上保存的PUSH Token向對應的終端設備發送通知消息。
STEP4、消息攜帶的PUSH Token作爲鑑權和路由機制會通過華爲PUSH平臺將消息發送到最終用戶設備上。
用過極光推送的都會涉及到設置別名或標籤,可是華爲push沒有別名和標籤,只有PUSH Token,翻了~和極光不能簡單粗暴的一起使用了。
看華爲PUSH服務文檔之前是這麼想的:
用設備類型進行區分使用哪家PUSH服務,設備爲華爲的,那就走華爲PUSH服務。設備爲小米的,則走小米PUSH服務。。。除大廠有PUSH服務的走極光PUSH服務。太TM天真了。。。
那就只有PUSH Token的問題,咱接着往下想:
那針對華爲做一個token與賬戶綁定,每個設備的上每個應用的Token都是唯一存在的。假設A賬戶綁定了token,然後切換B賬戶又和token綁定了,那給A和B推送的時候是指定的同一個token,此時服務器需要去把A賬戶綁定的token註銷掉,不然給A賬戶的推送消息就會被B賬戶收到。但是後臺開發回覆說這樣做不太好處理,容易出錯!!!
還有五六家PUSH服務情況各異,管理起來真的是太難了!
罷了罷了,不想了,腦仁疼!
這麼搞的話也挺耗成本的,又沒有那麼多測試機,還是選擇充錢吧!
極光VIP服務廠商通道(華爲,小米,魅族,FCM),它是根據app的月在線用戶峯值來進行收費的。
何以解憂?唯有充錢!