前兩天羣裏有兄弟在吐槽,作遠程推送的時候:老闆要求APP桌面圖標的右上角顯示紅色未讀數字(數字角標)要精準,有多少未讀通知就顯示數字幾;可是後臺的弟兄在發送推送通知的時候,每次的角標是1,而後要移動端這邊本身去把這個未讀數字去累加,而後顯示在APP上;而且後臺很是執拗的認爲這個累加未讀消息數量是在移動端處理的..... 微信
這就尷尬了,碰到執拗的隊友,溝通不成的時候確實是很痛苦的!app
這裏我說說本身在作推送功能時候的這個角標的驗證過程和理解,給後面的爲碰到相似狀況的同窗一些參考。測試
隨便截個圖舉個例子看看spa
當APP是處於後臺的時候,實現這個仍是好說的,由於當推送通知到達的時候是能夠監聽到的,能夠獲取到推送信息裏面的角標數字而後進行累加。code
可是當APP完成退出後臺的時候,想要app監聽到通知而且讀取通知信息設置角標,這個好像是辦不到的!blog
後臺推送消息的格式按照蘋果官方提供的格式,大體是這樣:it
{ "aps" : { "alert" : { "title" : "Game Request", "body" : "Bob wants to play poker", "action-loc-key" : "PLAY" }, "badge" : 5 }, "acme1" : "bar", "acme2" : [ "bang", "whiz" ] }
「aps」格式是固定的,後面的"acme1", "acme2」是自定義的數據。其中「badge"就是app的角標數字io
因此要證明APP的桌面紅色角標(未讀消息數字)究竟是由後臺控制的仍是移動端本身控制的,這個很容易。百度地圖
讓app內部不要本身操做角標變化,或者把該app徹底退出,而後後臺開始推送,假設推送的消息badge是數字幾,並且app的角標也是顯示數字幾,class
這個就足以證實app的紅色角標是由後臺推送時候控制的了!
固然話說回來,想要實現對app這個角標的精準顯示,須要一個強大的後臺:對每一個會員在app的讀取未讀消息進行追蹤記錄上報,
而後下次推送的時候,對每一個會員要進行未讀消息的統計,而後在推送消息裏面設置精準的badge數字。就能作到app精準的顯示未讀消息數字了。
咱們看好比QQ,微信等app,它們的角標數字是作的很是精準的,人家的後臺之強大,那是沒得比的。
可是咱們通常的APP, 你也想作到角標精準?有必要嗎?你連作推送都是用了第三方的推送sdk如極光、個推,你還想作到精準顯示角標,你去看看極光和個推對於羣推的方法,
壓根都沒提供精準設置badge的位置,說明想實現精準實現角標,專門研究推送的這些第三方公司也以爲難度很大,或者說要付出很大的代價!
通常來講,大多數app的角標數字作的是意思意思,沒那個精準,我測試過的有百度地圖、簡書、新浪財經等等,app的角標顯示也沒有作什麼精準顯示。因此對於我們作的若是是一個普通的app, 角標數字的顯示也就意思意思就好了,主要是爲了提醒用戶你有未讀消息嘛!真的想作到精準顯示角標,那就要和後臺的兄弟談好,讓他們作好準備加油開幹把!