以前從沒(méi)玩過(guò)遠(yuǎn)程通知叔遂,對(duì)遠(yuǎn)程通知的概念也是一無(wú)所知他炊,當(dāng)面對(duì)這片汪洋大海時(shí),更是一臉茫然已艰。為了滿足自己的一點(diǎn)點(diǎn)好奇心痊末,于是花了半天看了一遍官方文檔Local and Remote Notification Programming Guide。接著就嘗試著寫(xiě)了一個(gè)Demo哩掺,并集成JPushSDK凿叠,實(shí)現(xiàn)簡(jiǎn)單的遠(yuǎn)程通知推送功能。
概念
當(dāng)手機(jī)app沒(méi)有在前臺(tái)運(yùn)行時(shí),有兩種方式將新的數(shù)據(jù)推送給用戶盒件。一種是本地通知蹬碧,另一種是遠(yuǎn)程通知。
- 本地通知:應(yīng)用程序在本地配置通知詳細(xì)信息履恩,并將這些詳細(xì)信息傳遞到系統(tǒng)锰茉,然后當(dāng)應(yīng)用不在前臺(tái)時(shí),在指定的時(shí)間或地點(diǎn)觸發(fā)通知切心。常用來(lái)定時(shí)提醒用戶完成一些任務(wù)飒筑,比如提醒事項(xiàng)。
- 遠(yuǎn)程通知:使用公司服務(wù)器(或第三方服務(wù)器)通過(guò)APNs(Apple Push Notification service)將數(shù)據(jù)推送到用戶設(shè)備绽昏。
為什么會(huì)出現(xiàn)遠(yuǎn)程推送通知协屡?
- 傳統(tǒng)獲取數(shù)據(jù)的局限性,只有在app開(kāi)啟時(shí)才能獲取到數(shù)據(jù)全谤。只要用戶關(guān)閉了app肤晓,就無(wú)法與服務(wù)器請(qǐng)求數(shù)據(jù),也就不能實(shí)時(shí)更新數(shù)據(jù)认然。
- 遠(yuǎn)程推送可以解決這個(gè)問(wèn)題补憾,即使用戶關(guān)閉了app,只要聯(lián)網(wǎng)了卷员,并且打開(kāi)了app通知權(quán)限盈匾,就可以接收到服務(wù)器推送的遠(yuǎn)程通知。
遠(yuǎn)程推送機(jī)制
- app應(yīng)用程序向iOS系統(tǒng)注冊(cè)APNS消息推送功能毕骡,iOS系統(tǒng)請(qǐng)求APNS獲取device token(設(shè)備令牌)
- APNS將device token返回給app
- app 將device token 發(fā)送給本地Push服務(wù)器
- 在需要為應(yīng)用推送消息時(shí)削饵,本地Push服務(wù)器會(huì)將消息和device token打包發(fā)送給APNS
- APNS獲取device token并解碼,把推送消息發(fā)送給手機(jī)app
將遠(yuǎn)程通知傳遞給app過(guò)程
管理deviceToken
使用deviceToken標(biāo)識(shí)設(shè)備
本地Push服務(wù)器獲取deviceToken過(guò)程
配置相關(guān)證書(shū)
- 進(jìn)入蘋(píng)果開(kāi)發(fā)者網(wǎng)站登錄賬號(hào)后未巫,選擇Certificates,Identifiers&Profiles -> Identifiers -> App IDs
2.選擇對(duì)應(yīng)的App ID窿撬,打開(kāi)Edit
3.勾選 Push Notifications -> create Certificate
4.創(chuàng)建開(kāi)發(fā)環(huán)境下和生產(chǎn)環(huán)境下的SSL證書(shū)
選擇生成的CSR文件后點(diǎn)擊繼續(xù)
6.生成開(kāi)發(fā)環(huán)境下SSL證書(shū),下載后雙擊
7.采用同樣的方式生成生產(chǎn)環(huán)境下SSL證書(shū),最后在鑰匙串中有兩個(gè)證書(shū)
8.把這兩個(gè)都導(dǎo)出為個(gè)人信息交換文件(.p12)叙凡,在后續(xù)的JPush推送的時(shí)候需要使用劈伴。
在鑰匙串訪問(wèn)中創(chuàng)建CSR文件流程
1.鑰匙串訪問(wèn) -> 證書(shū)助理 -> 從證書(shū)頒發(fā)機(jī)構(gòu)請(qǐng)求證書(shū)
2.輸入用戶電子郵件地址 和 常用名稱 -> 繼續(xù)
3.生存CSR文件。
JPush推送
1.登錄賬號(hào)
2.選擇應(yīng)用管理
3.創(chuàng)建應(yīng)用
4.填寫(xiě)相關(guān)信息
5.創(chuàng)建應(yīng)用成功后獲取AppKey
6.按照J(rèn)Push提供的文檔集成握爷,文檔寫(xiě)的很詳細(xì)宰啦。
遠(yuǎn)程通知推送效果圖(只能夠真機(jī)測(cè)試)
JPush服務(wù)器端發(fā)送通知信息
手機(jī)端接收到通知信息