極光推送的角標(biāo)問(wèn)題——讓人又愛(ài)又恨的小紅點(diǎn)

我們現(xiàn)在無(wú)論何時(shí)拿出自己的手機(jī),解鎖后的主頁(yè)上蚁鳖,總能看到一個(gè)個(gè)的小紅點(diǎn),仿佛在吶喊:有消息啦糠雨,不管重不重要才睹,快點(diǎn)我,快來(lái)消除我甘邀。

甚至曾有人掀起了一波潮流:在微信頭像上加上小紅點(diǎn)练俐。這很直接很徹底地引發(fā)了大眾的清除強(qiáng)迫癥咆畏。

這也就是為什么我們做 App 的時(shí)候屿岂,希望在收到了推送消息時(shí)作郭,App 能帶上一個(gè)小紅點(diǎn)。在使用得當(dāng)?shù)那闆r下逗抑,小紅點(diǎn)有助于增加 App 的啟動(dòng)率剧辐,保持用戶粘度寒亥。

那么 App 端怎么來(lái)實(shí)現(xiàn)呢?小紅點(diǎn)中心的數(shù)值怎么來(lái)管理呢荧关?


Android

  • 角標(biāo)不是 Android 的基本功能溉奕,也就是說(shuō) Google 原生系統(tǒng)是不支持的,不過(guò)國(guó)內(nèi)某些 ROM 提供了各自的方法來(lái)支持自定義實(shí)現(xiàn)忍啤,只是跟隨系統(tǒng)更新加勤,提供的方法可能還會(huì)有所改變。因此極光推送并沒(méi)有支持 Android 的角標(biāo)同波,需要大家自己去實(shí)現(xiàn)與管理角標(biāo)值鳄梅。
  • 分享幾個(gè)實(shí)現(xiàn) Android badge 的項(xiàng)目


iOS

一、客戶端設(shè)置角標(biāo)

  • 設(shè)置本地顯示的角標(biāo)(Apple官方的接口)
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:(int)value];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; //清除角標(biāo)
//以上方法在任何地方均可調(diào)用未檩,根據(jù)自己的需要設(shè)定即可戴尸。譬如:

//殺死后點(diǎn)擊icon進(jìn)入時(shí)清除角標(biāo)
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
application.applicationIconBadgeNumber = 0;
}
//從后臺(tái)點(diǎn)擊icon進(jìn)入時(shí)清除角標(biāo)
func applicationWillEnterForeground(_ application: UIApplication) {
application.applicationIconBadgeNumber = 0;
}
  • 設(shè)置極光服務(wù)器存儲(chǔ)的角標(biāo)
+ (BOOL)setBadge:(int)value  //value 取值范圍:[0,99999]
+ (void)resetBadge  //相當(dāng)于  [setBadge:0],清空角標(biāo)

設(shè)通過(guò)調(diào)用 API 冤狡,使極光服務(wù)器為A設(shè)備存儲(chǔ)的角標(biāo)數(shù)為 P孙蒙,為 B 設(shè)備存儲(chǔ)的角標(biāo)數(shù)為 Q。


二悲雳、服務(wù)端或控制臺(tái)推送時(shí)马篮,badge可設(shè)置為 N,+N怜奖,-N

//服務(wù)端發(fā)送 json 消息串
{
    "notification" : {
         "ios" : {
                 "alert" : "hello, JPush!", 
                 "sound" : "sound.caf", 
                 "badge" : 1, //可傳值為N,+N翅阵,-N歪玲。
                 }
            }
       }
}   

控制臺(tái)的設(shè)置 badge 的步驟:推送>發(fā)送通知>選擇一個(gè)iOS目標(biāo)平臺(tái)>展開(kāi)可選設(shè)置> iOS > badge

  • N:推送時(shí)設(shè)置為固定的數(shù)值,收到時(shí)角標(biāo)便顯示該數(shù)值掷匠。
  • +N 或 -N:收到時(shí)角標(biāo)值 = 極光服務(wù)器存儲(chǔ)的值 ± N:
    • A 收到時(shí)角標(biāo)為 P ± N滥崩,B 收到時(shí)角標(biāo)為 Q ± N。
    • 因此如果推送時(shí)使用 ± N讹语,那么客戶端就需要注意本地和極光服務(wù)器的角標(biāo)應(yīng)同步設(shè)置钙皮。
    • 很多人問(wèn)咋個(gè)角標(biāo)清除不了,清除后再次推送收到的卻依舊是 清除前的值+N顽决,這就是因?yàn)?服務(wù)器存儲(chǔ)的角標(biāo)你沒(méi)同步修改咯短条。

這里應(yīng)該有注意到,極光服務(wù)器幫大家完成了每個(gè)設(shè)備的角標(biāo)的管理才菠,所以一般使用的時(shí)候只需要在客戶端預(yù)設(shè)好角標(biāo)的處理邏輯茸时,推送時(shí)固定好 + N,就可以不用再自己操心 badge 的值了赋访。

三可都、使用官方提供的服務(wù)端 SDK 各有不同

//java sdk 設(shè)置 badge+1用的不是setBadge缓待,而是autoBadge或者incrBadge

//C# SDK 設(shè)置 badge +1 用的是incrBadge

ps.ps:正經(jīng)講可能你不明白,那我再通俗點(diǎn)說(shuō):

1渠牲、官網(wǎng)-推送消息-選擇iOS平臺(tái)-可選設(shè)置-badge旋炒,設(shè)置1、2签杈、3或者N瘫镇,+1,+2之類的

2芹壕、iOS端收到消息汇四,系統(tǒng)直接就會(huì)顯示這個(gè)badge的值

3、如果你傳的+1踢涌,那么就是在極光服務(wù)器存的值里面+1后直接顯示通孽,一開(kāi)始App啥也沒(méi)做,就從0加起睁壁,你一直不setbadge背苦,就會(huì)一直+1下去,setbadge就改變這個(gè)+1起始值

4潘明、點(diǎn)擊了消息行剂,一般邏輯就是要清除、修改角標(biāo)钳降,那么調(diào)用Apple原生方法厚宰,看上面代碼,把顯示的角標(biāo)給清除了/修改了遂填,同時(shí)setbadge也附同樣的值铲觉,這樣下次+1的消息發(fā)過(guò)來(lái),就是在你當(dāng)前顯示的badge上+1顯示了吓坚,不需要你自己再管理了撵幽。

「再不行的話就測(cè)下我們的demo,多推送礁击,看效果總能明白(′?_?`)」


最后附贈(zèng)一個(gè)ps.ps.ps:JPush和JMessage的角標(biāo)是共用的盐杂,使用+1語(yǔ)義即可。

1哆窿、啟動(dòng)App链烈,成功注冊(cè)JPush和JMessage,登錄JMessage賬號(hào)

2更耻、JPush推送消息-選擇iOS平臺(tái)-可選設(shè)置-badge测垛,設(shè)置+1,極光服務(wù)器會(huì)處理你的角標(biāo)秧均,把badge值變?yōu)?「當(dāng)前存儲(chǔ)的角標(biāo)值」+1=N食侮,然后推送下去

3号涯、iOS端收到JPush消息,系統(tǒng)直接就會(huì)顯示這個(gè)badge的值锯七,暫定你現(xiàn)在App端不做處理(不清除和修改角標(biāo))

4链快、JMessage處于后臺(tái)等情況,極光有自動(dòng)的通知提醒(將你的會(huì)話消息轉(zhuǎn)為apns通知發(fā)到設(shè)備上)眉尸,發(fā)下來(lái)的消息域蜗,角標(biāo)是在N上+1后發(fā)下來(lái)并展示,發(fā)第二條消息噪猾,就是N+1+1=M霉祸。(JMessage的apns通知是我們自動(dòng)發(fā)的,所以角標(biāo)也是自動(dòng)默認(rèn)+1的語(yǔ)義)

5袱蜡、然后JPush發(fā)消息丝蹭,你后臺(tái)推送的時(shí)候也是寫的badge+1(這里JPush是可以傳固定值的,但是一旦傳了固定值坪蚁,收到消息就顯示這個(gè)固定值了奔穿,所以后臺(tái)推送一定要寫讓badge+1),那么此時(shí)收到敏晤,就展示的是M+1的角標(biāo)

6贱田、之后你點(diǎn)擊了消息等要做處理,一般邏輯就是要清除嘴脾、修改角標(biāo)男摧,那么調(diào)用Apple方法, UIApplication:setApplicationIconBadgeNumber 译打,把本地顯示的角標(biāo)給清除了/修改了彩倚,同時(shí)setbadge也附同樣的值,就是告訴極光服務(wù)器下次+1扶平,從這個(gè)值開(kāi)始+。


還不收了我去禍害處女座(o?v?)ノ

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蔬蕊,一起剝皮案震驚了整個(gè)濱河市结澄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岸夯,老刑警劉巖麻献,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異猜扮,居然都是意外死亡勉吻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門旅赢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)齿桃,“玉大人惑惶,你說(shuō)我怎么就攤上這事《套荩” “怎么了带污?”我有些...
    開(kāi)封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)香到。 經(jīng)常有香客問(wèn)我鱼冀,道長(zhǎng),這世上最難降的妖魔是什么悠就? 我笑而不...
    開(kāi)封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任千绪,我火速辦了婚禮,結(jié)果婚禮上梗脾,老公的妹妹穿的比我還像新娘荸型。我一直安慰自己,他們只是感情好藐唠,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布帆疟。 她就那樣靜靜地躺著,像睡著了一般宇立。 火紅的嫁衣襯著肌膚如雪踪宠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天妈嘹,我揣著相機(jī)與錄音柳琢,去河邊找鬼。 笑死润脸,一個(gè)胖子當(dāng)著我的面吹牛柬脸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毙驯,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼倒堕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了爆价?” 一聲冷哼從身側(cè)響起垦巴,我...
    開(kāi)封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铭段,沒(méi)想到半個(gè)月后骤宣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡序愚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年憔披,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡芬膝,死狀恐怖望门,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蔗候,我是刑警寧澤怒允,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站锈遥,受9級(jí)特大地震影響纫事,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜所灸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一丽惶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爬立,春花似錦钾唬、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吟策,卻和暖如春儒士,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背檩坚。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工着撩, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人匾委。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓拖叙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親赂乐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子薯鳍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 不同版本極光推送SDK集成各有差異,集成時(shí)一定要注意版本號(hào)挨措,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時(shí)宜閱讀 7,860評(píng)論 37 170
  • 版本記錄 前言 前一篇已經(jīng)對(duì)ios新特性進(jìn)行了介紹辐啄,這一篇?jiǎng)t對(duì)ios的SDK進(jìn)行說(shuō)明。1. 極光推送集成(一)2....
    刀客傳奇閱讀 1,297評(píng)論 0 1
  • 推送技術(shù)產(chǎn)生場(chǎng)景: --服務(wù)器端主動(dòng)性: 客戶端與服務(wù)器交互都是客戶端主動(dòng)的, 服務(wù)器一般不能主動(dòng)與客戶端進(jìn)行數(shù)據(jù)...
    原軍鋒閱讀 34,601評(píng)論 4 60
  • 版本記錄 前言 前一篇已經(jīng)對(duì)ios的SDK進(jìn)行了研究运嗜,這一篇?jiǎng)t對(duì)iOS SDK 常見(jiàn)問(wèn)題進(jìn)行說(shuō)明。1. 極光推送集...
    刀客傳奇閱讀 1,202評(píng)論 0 1
  • 早上四點(diǎn)起床被放了鴿子奋救,看著天一點(diǎn)點(diǎn)亮起來(lái)岭参,雖然沒(méi)有看到日出,也看到了被它映得通紅的云彩尝艘,同樣美得不要不...
    小鹿_lu閱讀 308評(píng)論 0 0