蘋果APNs’ device token特性和過期更新

APNs全名是Apple Push Notification Service革娄。用iPhone的應(yīng)該都習(xí)慣了,每次安裝完一個(gè)新應(yīng)用啟動(dòng)后,幾乎都會(huì)彈出個(gè)警告框,“XXX應(yīng)用”想要給您發(fā)送推送通知焙压。這個(gè)警告框的權(quán)限申請(qǐng)就是為了APNs推送,用戶授權(quán)后抑钟,應(yīng)用提供商就可以通過APNs給用戶推送消息冗恨。

APNs的工作機(jī)制簡(jiǎn)單來說可以分為兩步,第一步是注冊(cè)推送服務(wù)從APNs獲取device token來告知應(yīng)用提供商服務(wù)端味赃,第二步是應(yīng)用提供商服務(wù)端通過APNs給設(shè)備推送消息,device token是作為設(shè)備的唯一標(biāo)示虐拓。

上圖就是device token生成的一個(gè)過程心俗。我們以第一次安裝啟動(dòng)360兒童衛(wèi)士應(yīng)用為例,首先應(yīng)用會(huì)彈出個(gè)警告框蓉驹,請(qǐng)求用戶允許發(fā)送推送通知城榛,用戶允許后–>兒童衛(wèi)士會(huì)向系統(tǒng)注冊(cè)推送服務(wù),系統(tǒng)接到注冊(cè)請(qǐng)求后就會(huì)自動(dòng)連接APNs服務(wù)器請(qǐng)求獲取設(shè)備令牌(即device token)–>APNs服務(wù)器生成包含device id的device token并下發(fā)給設(shè)備–>兒童衛(wèi)士接受到device token态兴,保存在本地同時(shí)發(fā)送給兒童衛(wèi)士服務(wù)器狠持,到此第一步就完成了。

上圖就是推送消息的示圖了瞻润,設(shè)備通過device token和APNs服務(wù)器保持連接狀態(tài)喘垂。還以360兒童衛(wèi)士為例,當(dāng)孩子到家了绍撞,兒童衛(wèi)士服務(wù)器就需要發(fā)到達(dá)提醒給家長(zhǎng)正勒。這時(shí)兒童衛(wèi)士服務(wù)器就會(huì)通過device token作為目的設(shè)備標(biāo)示來推送加密的到達(dá)提醒消息給APNs,APNs解密后再根據(jù)device token推送給指定設(shè)備傻铣。這樣章贞,一次推送就完成了。

了解了APNs工作機(jī)制非洲,很明顯能夠看到device token在其中起了至關(guān)重要的串聯(lián)指向作用鸭限。如果device token錯(cuò)誤或缺失,推送就無法送達(dá)目標(biāo)設(shè)備了两踏。所以測(cè)試也罷開發(fā)也好败京,都很有必要了解一下device token的一些特性:

1.每個(gè)device token都是唯一的,只會(huì)對(duì)應(yīng)一臺(tái)設(shè)備缆瓣。

2.device token與設(shè)備系統(tǒng)相關(guān)(注意不是和設(shè)備綁定的喧枷!詳解見后文),同一設(shè)備系統(tǒng)上不同應(yīng)用獲取的token是同一個(gè)隧甚。

3.應(yīng)用卸載重新安裝车荔,獲取到的device token不會(huì)變化,而且不會(huì)再?gòu)棾鐾扑蜋?quán)限申請(qǐng)的彈窗戚扳,會(huì)自動(dòng)繼承前一次安裝的設(shè)置信息忧便。這個(gè)特性容易引發(fā)一些安全問題,用戶卸載重新安裝一個(gè)應(yīng)用后帽借,還沒有登錄應(yīng)用珠增,就可能接到上次登錄帳號(hào)的推送消息了。我使用iPhone QQ和Skype都碰到過這種情況砍艾〉俳蹋客戶端沒有辦法處理這個(gè)問題,因?yàn)楸恍遁d時(shí)客戶端是沒法做出反應(yīng)來通知服務(wù)器的脆荷。蘋果有一個(gè)feedback的機(jī)制可以解決這個(gè)問題凝垛,蘋果為每個(gè)應(yīng)用程序維護(hù)了一個(gè)不斷更新的推送失敗的設(shè)備列表。服務(wù)端可以去定期檢查并更新推送設(shè)備列表蜓谋,這樣能解決大部分問題梦皮,也能減少不必要的報(bào)文開銷。

4.第三點(diǎn)客戶端不能處理桃焕,但退出登錄通知服務(wù)器就是客戶端的工作了剑肯。用戶退出登錄客戶端時(shí),客戶端應(yīng)該告知服務(wù)器观堂,停止對(duì)這個(gè)設(shè)備繼續(xù)推送用戶退出登錄帳號(hào)的消息了让网。這點(diǎn)應(yīng)該不算device token的特性了,是一個(gè)標(biāo)準(zhǔn)處理方法型将。

相信很多人都有這樣一個(gè)疑問寂祥,作為一個(gè)設(shè)備推送的唯一標(biāo)示,device token是否會(huì)變化或者過期呢七兜?蘋果在這點(diǎn)上有些含糊其辭丸凭,只是在官方文檔上建議開發(fā)者在每次啟動(dòng)應(yīng)用時(shí)應(yīng)該都向APNs獲取device token并上傳給服務(wù)器。從這句話來看腕铸,device token是會(huì)變化的惜犀,不然不用每次啟動(dòng)都去獲取。因?yàn)樘O果官方?jīng)]有給出明確的device token變化的情況狠裹,所以以下列舉的都是一些前人總結(jié)的經(jīng)驗(yàn)虽界,主要援引了stackoverflow上關(guān)于這個(gè)問題一個(gè)回答,回答者稱是和蘋果的一個(gè)工程師交流及自己實(shí)驗(yàn)得出的結(jié)果涛菠。

1.升級(jí)系統(tǒng)device token有可能變化莉御,確認(rèn)的是升級(jí)到iOS5會(huì)變化撇吞,猜測(cè)是升級(jí)大的系統(tǒng)版本后device token會(huì)變化。

2.抹掉所有內(nèi)容和設(shè)置礁叔,reset設(shè)備后牍颈,device token會(huì)變化。

3.恢復(fù)一個(gè)非本機(jī)的備份后琅关,device token會(huì)變化煮岁。

4.device token會(huì)過期,這個(gè)眾說紛紜涣易,有說是半年的画机,有說一年,有說兩年的新症,不過會(huì)過期應(yīng)該是確鑿的步氏。

5.備份或者恢復(fù)本機(jī)的備份,device token不會(huì)變化徒爹。

所以保險(xiǎn)起見戳护,按照蘋果的每次啟動(dòng)應(yīng)用時(shí)檢查device token并發(fā)送到服務(wù)器是比較穩(wěn)妥的做法。

來源:http://blogs.#/360qtest/2014/03/24/%E8%8B%B9%E6%9E%9Capns-device-token%E7%89%B9%E6%80%A7%E5%92%8C%E8%BF%87%E6%9C%9F%E6%9B%B4%E6%96%B0/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瀑焦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梗肝,更是在濱河造成了極大的恐慌榛瓮,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巫击,死亡現(xiàn)場(chǎng)離奇詭異禀晓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坝锰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門粹懒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顷级,你說我怎么就攤上這事凫乖。” “怎么了弓颈?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵帽芽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我翔冀,道長(zhǎng)导街,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任纤子,我火速辦了婚禮搬瑰,結(jié)果婚禮上款票,老公的妹妹穿的比我還像新娘。我一直安慰自己泽论,他們只是感情好艾少,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著佩厚,像睡著了一般姆钉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上抄瓦,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天潮瓶,我揣著相機(jī)與錄音,去河邊找鬼钙姊。 笑死毯辅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的煞额。 我是一名探鬼主播思恐,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼膊毁!你這毒婦竟也來了胀莹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤婚温,失蹤者是張志新(化名)和其女友劉穎描焰,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栅螟,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荆秦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了力图。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片步绸。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吃媒,靈堂內(nèi)的尸體忽然破棺而出瓤介,到底是詐尸還是另有隱情,我是刑警寧澤赘那,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布惑朦,位于F島的核電站,受9級(jí)特大地震影響漓概,放射性物質(zhì)發(fā)生泄漏漾月。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一胃珍、第九天 我趴在偏房一處隱蔽的房頂上張望梁肿。 院中可真熱鬧蜓陌,春花似錦、人聲如沸吩蔑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烛芬。三九已至隧期,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赘娄,已是汗流浹背仆潮。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遣臼,地道東北人性置。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像揍堰,于是被迫代替她去往敵國(guó)和親鹏浅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • APNs全名是Apple Push Notification Service屏歹。用iPhone的應(yīng)該都習(xí)慣了隐砸,每次安...
    liu_bo閱讀 6,152評(píng)論 1 7
  • 本文是翻譯的 APNs 的官方說明 自己英文不是太好凰萨,花了不少時(shí)間來翻譯,其實(shí)之前我是看不進(jìn)去的械馆。后來發(fā)現(xiàn),只要你...
    KyleBing閱讀 1,809評(píng)論 0 0
  • 之前文章中實(shí)現(xiàn)推送提到device token武通,本文將講述device token以下三方面:· device t...
    杭研融合通信iOS閱讀 9,179評(píng)論 0 5
  • 什么是APNS霹崎? 蘋果推送通知服務(wù)(APNs)是推送通知的網(wǎng)關(guān),iPhone ipad 對(duì)于應(yīng)用程序在后臺(tái)運(yùn)行有諸...
    CoderZS閱讀 1,470評(píng)論 0 11
  • 來源:崔江濤的博客 概述在多數(shù)移動(dòng)應(yīng)用中任何時(shí)候都只能有一個(gè)應(yīng)用程序處于活躍狀態(tài)冶忱,如果其他應(yīng)用此刻發(fā)生了一些用戶感...
    李棲桐閱讀 926評(píng)論 0 0