通知與推送
本地通知和遠(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)力。