可能碰到的iOS筆試面試題(24) -- 通知與推送

通知與推送

本地通知和遠(yuǎn)程推送通知對(duì)基本概念和用法?
image
image

本地通知和遠(yuǎn)程推送通知都可以向不在前臺(tái)運(yùn)行的應(yīng)用發(fā)送消息,這種消息既可能是即將發(fā)生的事件,也可能是服務(wù)器的新數(shù)據(jù).不管是本地通知還是遠(yuǎn)程通知,他們?cè)诔绦蚪缑娴娘@示效果相同,都可能顯示為一段警告信息或應(yīng)用程序圖標(biāo)上的微章.
本地通知和遠(yuǎn)程推送通知的基本目的都是讓應(yīng)用程序能夠通知用戶某些事情, 而且不需要應(yīng)用程序在前臺(tái)運(yùn)行.二者的區(qū)別在于本地通知由本應(yīng)用負(fù)責(zé)調(diào)用,只能從當(dāng)前設(shè)備上的iOS發(fā)出, 而遠(yuǎn)程通知由遠(yuǎn)程服務(wù)器上的程序發(fā)送到APNS,再由APNS把消息推送至設(shè)備上的程序

iOS允許最近本地通知數(shù)最大是多少(c)

A.16  B.32  C.64  D.128

把程序自己關(guān)掉和程序進(jìn)入后臺(tái),遠(yuǎn)程推送的區(qū)別

  • 關(guān)掉后不執(zhí)行任何代碼, 不能處理事件
  • 應(yīng)用程序進(jìn)入后臺(tái)狀態(tài)不久后轉(zhuǎn)入掛起狀態(tài)。在這種狀態(tài)下,應(yīng)用程序不執(zhí)行任何代碼,并有可能在任意時(shí)候從內(nèi)存中刪除。只有當(dāng)用戶再次運(yùn)行此應(yīng)用,應(yīng)用才會(huì)從掛起狀態(tài)喚醒,代碼得以繼續(xù)執(zhí)行
  • 或者進(jìn)入后臺(tái)時(shí)開啟多任務(wù)狀態(tài),保留在內(nèi)存中,這樣就可以執(zhí)行系統(tǒng)允許的動(dòng)作
  • 遠(yuǎn)程推送是由遠(yuǎn)程服務(wù)器上的程序發(fā)送到APNS,再由APNS把消息推送至設(shè)備上的程序,當(dāng)應(yīng)用程序收到推送的消息會(huì)自動(dòng)調(diào)用特定的方法執(zhí)行事先寫好的代碼

本地通知和遠(yuǎn)程推送通知對(duì)基本概念和用法?

  • 本地通知和遠(yuǎn)程推送通知都可以向不在前臺(tái)運(yùn)行的應(yīng)用發(fā)送消息,這種消息既可能是即將發(fā)生的事件,也可能是服務(wù)器的新數(shù)據(jù).不管是本地通知還是遠(yuǎn)程通知,他們?cè)诔绦蚪缑娴娘@示效果相同,都可能顯示為一段警告信息或應(yīng)用程序圖標(biāo)上的微章.
  • 本地通知和遠(yuǎn)程推送通知的基本目的都是讓應(yīng)用程序能夠通知用戶某些事情, 而且不需要應(yīng)用程序在前臺(tái)運(yùn)行.二者的區(qū)別在于本地通知由本應(yīng)用負(fù)責(zé)調(diào)用,只能從當(dāng)前設(shè)備上的iOS發(fā)出, 而遠(yuǎn)程通知由遠(yuǎn)程服務(wù)器上的程序發(fā)送到APNS,再由APNS把消息推送至設(shè)備上的程序

Push Notification 是如何工作的?

  • 推送通知分為兩種,一個(gè)是本地推送,一個(gè)是遠(yuǎn)程推送
  • 本地推送:不需要聯(lián)網(wǎng)也可以推送,是開發(fā)人員在APP內(nèi)設(shè)定特定的時(shí)間來(lái)提醒用戶干什么
  • 遠(yuǎn)程推送:需要聯(lián)網(wǎng),用戶的設(shè)備會(huì)于蘋果APNS服務(wù)器形成一個(gè)長(zhǎng)連接,用戶設(shè)備會(huì)發(fā)送uuid和Bundle idenidentifier給蘋果服務(wù)器,蘋果服務(wù)器會(huì)加密生成一個(gè)deviceToken給用戶設(shè)備,然后設(shè)備會(huì)將deviceToken發(fā)送給APP的服務(wù)器,服務(wù)器會(huì)將deviceToken存進(jìn)他們的數(shù)據(jù)庫(kù),這時(shí)候如果有人發(fā)送消息給我,服務(wù)器端就會(huì)去查詢我的deviceToken,然后將deviceToken和要發(fā)送的信息發(fā)送給蘋果服務(wù)器,蘋果服務(wù)器通過(guò)deviceToken找到我的設(shè)備并將消息推送到我的設(shè)備上,這里還有個(gè)情況是如果APP在線,那么APP服務(wù)器會(huì)于APP產(chǎn)生一個(gè)長(zhǎng)連接,這時(shí)候APPF服務(wù)器會(huì)直接通過(guò)deviceToken將消息推送到設(shè)備上

為什么 NotificationCenter 要 removeObserver? 如何實(shí)現(xiàn)自動(dòng) remove?

  • 如果不移除的話,萬(wàn)一注冊(cè)通知的類被銷毀以后又發(fā)了通知,程序會(huì)崩潰.因?yàn)橄蛞爸羔槹l(fā)送了消息
  • 實(shí)現(xiàn)自動(dòng)remove:通過(guò)自釋放機(jī)制,通過(guò)動(dòng)態(tài)屬性將remove轉(zhuǎn)移給第三者,解除耦合,達(dá)到自動(dòng)實(shí)現(xiàn)remove

是否可以把比較耗時(shí)的操作放在NSNotificationCenter中

  • 如果在異步線程發(fā)的通知,那么可以執(zhí)行比較耗時(shí)的操作;
  • 如果在主線程發(fā)的通知,那么就不可以執(zhí)行比較耗時(shí)的操作

文章如有問(wèn)題,請(qǐng)留言,我將及時(shí)更正。

滿地打滾賣萌求贊,如果本文幫助到你,輕點(diǎn)下方的紅心,給作者君增加更新的動(dòng)力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 極光推送: 1.JPush當(dāng)前版本是1.8.2,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐,SD...
    Isspace閱讀 6,764評(píng)論 10 16
  • 概述 在多數(shù)移動(dòng)應(yīng)用中任何時(shí)候都只能有一個(gè)應(yīng)用程序處于活躍狀態(tài),如果其他應(yīng)用此刻發(fā)生了一些用戶感興趣的那么通過(guò)通知...
    莫離_焱閱讀 6,543評(píng)論 1 8
  • 推送通知注意:這里說(shuō)的推送通知跟NSNotification有所區(qū)別NSNotification是抽象的,不可見的...
    醉葉惜秋閱讀 1,535評(píng)論 0 3
  • 推送通知 注意:這里說(shuō)的推送通知跟NSNotification有所區(qū)別 NSNotification是抽象的,不可...
    iOS開發(fā)攻城獅閱讀 4,281評(píng)論 1 13
  • 鏡中絲把繁霜染,心底意將清韻生。 尋覓并非新樂(lè)趣,詠吟曾是舊經(jīng)營(yíng)。 只緣自在常乘興,何事悠閑要計(jì)程。 天下能無(wú)萬(wàn)般...
    雪窗_武立之閱讀 250評(píng)論 0 2