我們現在無論何時拿出自己的手機,解鎖後的主頁上,總能看到一個個的小紅點,彷彿在吶喊:有消息啦,不管重不重要,快點我,快來消除我。
甚至曾有人掀起了一波潮流:在微信頭像上加上小紅點。這很直接很徹底地引發了大衆的清除強迫症。
這也就是爲什麼我們做 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)ノ
轉自:簡書 末日雲遊