iOS的消息推送機(jī)制主要分為本地通知和遠(yuǎn)程推送兩種模式。本文將圍繞這兩種模式,詳細(xì)介紹iOS的通知推送機(jī)制。
本地通知
一、本地通知介紹
指定推送時(shí)間,此時(shí)手機(jī)會(huì)彈出推送通知,無需網(wǎng)絡(luò)連接,如日歷、待辦事項(xiàng)、鬧鐘等應(yīng)用。
二、本地通知使用
1. 在代碼中注冊(cè)本地通知
如果是iOS 7及更早的設(shè)備,無需開發(fā)者添加代碼即可使用(用戶需要打開App通知)。
如果是 iOS 8 - iOS 10 之間的設(shè)備,可以直接用下面的代碼注冊(cè)(通過注冊(cè)本地通知)。
如果是iOS 10以上的設(shè)備,需要導(dǎo)入#in并(在iOS 10中,蘋果推出了遠(yuǎn)程推送和本地通知的新框架)SDA-LeahyGo(圖形數(shù)據(jù)提取工具),如下:
2. 發(fā)送本地通知
3. 取消本地通知
4. 處理傳入的本地通知
4.1 應(yīng)用在前臺(tái)運(yùn)行
4.2 應(yīng)用在后臺(tái)激活
4.3 應(yīng)用在后臺(tái)被掛起或殺死
遠(yuǎn)程推送
一、遠(yuǎn)程推送介紹
: 應(yīng)用程序
APNs:蘋果推送
遠(yuǎn)程推送工作流程
二、遠(yuǎn)程推送式
1. 普通推送
服務(wù)器通過 APNs 推送到手機(jī)的消息通知,包括:聲音、橫幅、角標(biāo)和自定義字段。
通知內(nèi)容的格式如下:
2. VoIP 推送
iOS 8之后推出,依賴.,主要用于音視頻通話時(shí)的響鈴,VoIP推送可以在應(yīng)用被殺時(shí)喚醒應(yīng)用。
使用時(shí)需要在&中開啟VoIP、fetch、ModesSmillaEnlarger(圖片清晰無損放大),并添加..
從 iOS 13 開始RePaper Studio(手繪板軟件),為了防止非來電功能濫用 VoIP 推送,Apple 禁止在非來電功能中使用 VoIP 推送。如果使用 VoIP 推送,則只能使用 iOS 系統(tǒng)。庫,如果你不使用 iOS 系統(tǒng)。庫,App 收到 VoIP 推送后會(huì)被殺掉,表現(xiàn)類似于不接收 VoIP 推送;由于蘋果在中國限制使用iOS系統(tǒng).,因此VoIP推送功能無法在Apple Store獲批。您可以將VoIP推送轉(zhuǎn)換為APNs解決方案,融云iOS 13及以上VoIP功能適配。
3. 靜默推送
iOS 7 版本之后引入的一種特殊的遠(yuǎn)程推送,也稱為后臺(tái)遠(yuǎn)程推送。本次推送的特點(diǎn)是收到通知時(shí)沒有彈窗、和聲音。此時(shí)無需點(diǎn)擊通知,無需打開App就會(huì)執(zhí)行以下方法:
注意:1.需要開啟和開啟遠(yuǎn)程推送功能
2. 靜默推送字段中不允許出現(xiàn)alert、badge、sound等字段,必須包含-。
三、iOS 遠(yuǎn)程推送配置
1. 申請(qǐng)證書和配置文件
1.1 創(chuàng)建應(yīng)用 ID
1.1.1 登錄蘋果,輸入,點(diǎn)擊“+”按鈕。
1.1.2 創(chuàng)建App ID(如果App ID已經(jīng)存在,可以直接跳過此步驟)
注意:App 不能使用通配符mac怎么打開軟件消息通知,否則無法使用遠(yuǎn)程推送服務(wù)。
1.1.3 開啟遠(yuǎn)程推送服務(wù)
1.2 創(chuàng)建推送證書
1.2.1 創(chuàng)建推送證書
1.2.2 選擇新的證書類型(開發(fā)或生產(chǎn))
注意:從iOS9.2開始,Apple上生成的生產(chǎn)推送證書名稱為Apple Push:XXX,之前生成的生產(chǎn)推送證書名稱為Apple IOS Push:XXX。
1.2.3 選擇App ID開啟遠(yuǎn)程推送,點(diǎn)擊后會(huì)提示需要CSR文件,CSR文件需要參考1.2.生成@>4
1.2.4 生成CSR文件上傳
? 打開mac 系統(tǒng)提供的鑰匙串訪問權(quán)限;
? 向證書頒發(fā)機(jī)構(gòu)申請(qǐng)證書;
? 將請(qǐng)求的 CSR 保存到磁盤。
1.2.5 上傳 (CSR) 文件
上傳 . 1.2.4中生成的文件,點(diǎn)擊生成推送證書。
1.2.6 下載 生成推送證書并導(dǎo)出.p12文件
雙擊 下載 的推送證書,它將被導(dǎo)入到鑰匙串中。打開mac怎么打開軟件消息通知,選擇對(duì)應(yīng)的證書,右鍵選擇。保存 .p12 文件時(shí),您可以設(shè)置或不設(shè)置密碼。
注意在右鍵選擇導(dǎo)出的時(shí)候不要打開證書,在證書上右擊就可以了。
1.3 創(chuàng)建配置文件
1.3.1 已創(chuàng)建
2.3@>
1.3.2 選擇對(duì)應(yīng)的環(huán)境
2.6@>
1.3.3 關(guān)聯(lián)配置文件的App ID
2.9@>
1.3.4 選擇開發(fā)者證書
1.3.5 選擇要安裝的設(shè)備
1.3.5 填寫姓名
1.3.6 下載 并雙擊將其添加到 Xcode
2. 代碼處理
2.1 在代碼中注冊(cè)遠(yuǎn)程推送
如果是iOS 10以上的設(shè)備,需要導(dǎo)入#in并(在iOS 10中,蘋果推出了遠(yuǎn)程推送和本地通知的新框架),如下:
#如果
#
#萬一
注冊(cè)遠(yuǎn)程推送相關(guān)代碼:
2.2. 處理
如果處理方法是去掉[ ]的“”和“空格”,iOS 13之前的設(shè)備可以得到正確的,而iOS 13之后的設(shè)備不能得到正確的;因?yàn)樵趇OS 13之后,可以通過 [ ] 得到正確的字符串,變成如下格式:
現(xiàn)在獲取的方法應(yīng)該是:
3. 處理傳入的遠(yuǎn)程推送
3.1 應(yīng)用在前臺(tái)運(yùn)行
當(dāng) App 在前臺(tái)可見時(shí),它處于前臺(tái)狀態(tài)。
3.1.1 收到遠(yuǎn)程推送時(shí)會(huì)回調(diào)如下方法
3.1.2 點(diǎn)擊遠(yuǎn)程推送會(huì)回調(diào)如下方法
3.2 應(yīng)用在后臺(tái)激活
當(dāng)app進(jìn)入后臺(tái)沒有被系統(tǒng)回收時(shí),在后臺(tái)處于活動(dòng)狀態(tài)。
3.2.1 點(diǎn)擊彈窗會(huì)啟動(dòng)應(yīng)用并回調(diào)如下方法
3.3 應(yīng)用程序在后臺(tái)被掛起或殺死
當(dāng)App進(jìn)入后臺(tái)被系統(tǒng)回收或進(jìn)程被殺死時(shí),處于后臺(tái)掛起狀態(tài)。
四、iOS 遠(yuǎn)程推送擴(kuò)展
1. 修改通知內(nèi)容
隨著iOS 10的新增,可以修改接收到的遠(yuǎn)程推送內(nèi)容。
注意:
1.1 僅適用于 iOS 10 及以上版本;
1.2 后臺(tái)推送的數(shù)據(jù)格式要協(xié)商;
1.3中的系統(tǒng)版本需要修改為10.0。如果版本高于測試設(shè)備的系統(tǒng)版本,則不執(zhí)行相應(yīng)的方法。
具體步驟如下:
?在項(xiàng)目中添加:。
? 主項(xiàng)目啟用推送和模式功能。
? 啟用推送功能。
? 在 .m 中實(shí)現(xiàn) – (void):(t *) :(void (^)(t * )) :