極光推送的角標問題——讓人又愛又恨的小紅點

我們現在無論何時拿出自己的手機,解鎖後的主頁上,總能看到一個個的小紅點,彷彿在吶喊:有消息啦,不管重不重要,快點我,快來消除我。


甚至曾有人掀起了一波潮流:在微信頭像上加上小紅點。這很直接很徹底地引發了大衆的清除強迫症。


這也就是爲什麼我們做 App 的時候,希望在收到了推送消息時,App 能帶上一個小紅點。在使用得當的情況下,小紅點有助於增加 App 的啓動率,保持用戶粘度。


那麼 App 端怎麼來實現呢?小紅點中心的數值怎麼來管理呢?


Android


  • 角標不是 Android 的基本功能,也就是說 Google 原生系統是不支持的,不過國內某些 ROM 提供了各自的方法來支持自定義實現,只是跟隨系統更新,提供的方法可能還會有所改變。因此極光推送並沒有支持 Android 的角標,需要大家自己去實現與管理角標值。

  • 分享幾個實現 Android badge 的項目

  • ShortcutBadger

  • ShortcutHelper

  • BadgeUtil


iOS


一、客戶端設置角標


  • 設置本地顯示的角標(Apple官方的接口)


[[UIApplication sharedApplication] setApplicationIconBadgeNumber:(int)value];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; //清除角標
//以上方法在任何地方均可調用,根據自己的需要設定即可。譬如:
//殺死後點擊icon進入時清除角標
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.applicationIconBadgeNumber = 0;
}
//從後臺點擊icon進入時清除角標
func applicationWillEnterForeground(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0;
}


  • 設置極光服務器存儲的角標


+ (BOOL)setBadge:(int)value  //value 取值範圍:[0,99999]
+ (void)resetBadge  //相當於  [setBadge:0],清空角標


設通過調用 API ,使極光服務器爲A設備存儲的角標數爲 P,爲 B 設備存儲的角標數爲 Q。


二、服務端或控制檯推送時,badge可設置爲 N,+N,-N


//服務端發送 json 消息串
{
    "notification" : {
         "ios" : {
                 "alert" : "hello, JPush!", 
                 "sound" : "sound.caf", 
                 "badge" : 1, //可傳值爲N,+N,-N。
                 }
            }
       }
}


控制檯的設置 badge 的步驟:推送>發送通知>選擇一個iOS目標平臺>展開可選設置> iOS > badge


  • N:推送時設置爲固定的數值,收到時角標便顯示該數值。

  • +N 或 -N:收到時角標值 = 極光服務器存儲的值 ± N:

  • A 收到時角標爲 P ± N,B 收到時角標爲 Q ± N。

  • 因此如果推送時使用 ± N,那麼客戶端就需要注意本地和極光服務器的角標應同步設置。

  • 很多人問咋個角標清除不了,清除後再次推送收到的卻依舊是 清除前的值+N,這就是因爲 服務器存儲的角標你沒同步修改咯。


這裏應該有注意到,極光服務器幫大家完成了每個設備的角標的管理,所以一般使用的時候只需要在客戶端預設好角標的處理邏輯,推送時固定好 + N,就可以不用再自己操心 badge 的值了。


還不收了我去禍害處女座(ov)ノ


轉自:簡書 末日雲遊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章