版本記錄
| 版本號(hào) | 時(shí)間 |
|---|---|
| V1.0 | 2017.05.14 |
前言
??前一篇已經(jīng)對(duì)極光推送產(chǎn)品架構(gòu)和服務(wù)進(jìn)行了介紹,這一篇?jiǎng)t只對(duì)ios客戶端的集成和使用等狀況進(jìn)行了說(shuō)明。
1. 極光推送集成(一)
ios SDK概述
這里先給出了兩個(gè)鏈接:
一、JPush ios原理
下面這個(gè)圖給出了Jpush的原理。

??從上圖可以看出,JPush iOS Push 包括 2 個(gè)部分,APNs 推送(代理),與 JPush 應(yīng)用內(nèi)消息。
- 紅色部分是 APNs 推送,JPush 代理開(kāi)發(fā)者的應(yīng)用(需要基于開(kāi)發(fā)者提供的應(yīng)用證書),向蘋果 APNs 服務(wù)器推送。由 APNs Server 推送到 iOS 設(shè)備上。
- 藍(lán)色部分是 JPush 應(yīng)用內(nèi)推送部分,即 App 啟動(dòng)時(shí),內(nèi)嵌的 JPush SDK 會(huì)開(kāi)啟長(zhǎng)連接到 JPush Server,從而 JPush Server 可以推送消息到 App 里。
APNs 通知
??APNs 通知:是指通過(guò)向 Apple APNs 服務(wù)器發(fā)送通知,到達(dá) iOS 設(shè)備,由 iOS 系統(tǒng)提供展現(xiàn)的推送。用戶可以通過(guò) IOS 系統(tǒng)的 “設(shè)置”-> “通知” 進(jìn)行設(shè)置,開(kāi)啟或者關(guān)閉某一個(gè) App 的推送能力。JPush iOS SDK 不負(fù)責(zé) APNs 通知的展現(xiàn),只是向 JPush 服務(wù)器端上傳 Device Token 信息,JPush 服務(wù)器端代理開(kāi)發(fā)者向 Apple APNs 推送通知。
獲取 APNs 推送內(nèi)容
** 應(yīng)用內(nèi)消息**
??應(yīng)用內(nèi)消息:JPush iOS SDK 提供的應(yīng)用內(nèi)消息功能,在 App 在前臺(tái)時(shí)能夠收到推送下來(lái)的消息。App 可使用此功能來(lái)做消息下發(fā)動(dòng)作。此消息不經(jīng)過(guò) APNs 服務(wù)器,完全由 JPush 提供功能支持。
獲取應(yīng)用內(nèi)消息推送內(nèi)容
APNs通知與應(yīng)用內(nèi)消息對(duì)比
??如果只需要發(fā)送通知,則可以忽略應(yīng)用內(nèi)消息的處理。對(duì)于兩種消息的代碼處理可以參考API 部分的描述。
JPush API v3 支持同時(shí)一次調(diào)用同時(shí)推送 APNs 通知與JPush 應(yīng)用內(nèi)消息。這在某些應(yīng)用場(chǎng)景里是有意義的。
看一下下面二者的區(qū)別。
| 項(xiàng)目 | APNS | 應(yīng)用內(nèi)消息 |
|---|---|---|
| 推送原則 | 由JPush服務(wù)器發(fā)送至APNS服務(wù)器,再下發(fā)到手機(jī)。 | 由JPush直接下發(fā),每次推送都會(huì)嘗試發(fā)送,如果用戶在線則立即收到。否則保存為離線。 |
| 離線消息 | 離線消息由APNS服務(wù)器緩存按照Apple的邏輯處理。 | 用戶不在線JPush server 會(huì)保存離線消息,時(shí)長(zhǎng)默認(rèn)保留一天。離線消息保留5條。 |
| 推送與證書環(huán)境 | 應(yīng)用證書和推送指定的iOS環(huán)境匹配才可以收到。 | 自定義消息與APNS證書環(huán)境無(wú)關(guān)。 |
| 接收方式 | 應(yīng)用退出,后臺(tái)以及打開(kāi)狀態(tài)都能收到APNS | 需要應(yīng)用打開(kāi),與JPush 建立連接才能收到。 |
| 展示效果 | 如果應(yīng)用后臺(tái)或退出,會(huì)有系統(tǒng)的APNS提醒。如果應(yīng)用處于打開(kāi)狀態(tài),則不展示。 | 非APNS,默認(rèn)不展示??赏ㄟ^(guò)獲取接口自行編碼處理。 |
| 處理函數(shù) | Apple提供的接口:didReceiveRemoteNotification | JPush提供的接口:networkDidReceiveMessage |
二、iOS SDK 集成
請(qǐng)參考以下文檔與教程,來(lái)集成 IOS SDK。
三、iOS SDK 說(shuō)明
iOS 版本支持
- 支持的iOS版本為6.0及以上版本。
- 支持iOS版本為10.0以上的版本時(shí)需知。
- Notification Service Extension證書配置時(shí)需要注意 BundleID不能與Main Target一致,證書需要單獨(dú)額外配置。
- 請(qǐng)將Notification Service Extension中的Deployment Target設(shè)置為10.0。
- 在XCode7或者更低的版本中刪除Notification Service Extension所對(duì)應(yīng)的Target。
- 在XCode7或者更低的版本中請(qǐng)將引入的'UserNotifications.framework'刪除。
組成
- 頭文件 JPUSHService.h
- 靜態(tài)庫(kù)文件 jpush-ios-x.x.x.a,jcore-ios-x.x.x.a
注意事項(xiàng)
四、JPush APNs 通知的意義
iOS 平臺(tái)上推送通知,只有 APNs 這個(gè)官方的通道,是可以隨時(shí)送達(dá)的。一般開(kāi)發(fā)者都是自己部署應(yīng)用服務(wù)器向 APNs Server 推送。
JPush iOS 推送相比直接向 APNs 推送有什么好處呢?
- 減少開(kāi)發(fā)及維護(hù)成本
- 應(yīng)用開(kāi)發(fā)者不需要去開(kāi)發(fā)維護(hù)自己的推送服務(wù)器與 APNs 對(duì)接。
- 集成了 JPush iOS SDK 后不必自己維護(hù)更新 device token。
- 通過(guò) JPush 的 Web Portal 直接推送,也可以調(diào)用JPush的 HTTP 協(xié)議 API 來(lái)完成,開(kāi)發(fā)工作量大大減少。
- 減少運(yùn)營(yíng)成本
- 極光推送支持一次推送,同時(shí)向 Android, iOS, WinPhone 三個(gè)平臺(tái)。支持統(tǒng)一的 API 與推送界面。
- 極光推送提供標(biāo)簽、別名綁定機(jī)制,以及提供了非常細(xì)分的用戶分群方式,運(yùn)營(yíng)起來(lái)非常簡(jiǎn)單、直觀。
- 提供應(yīng)用內(nèi)推送:
- 除了使得 APNs 推送更簡(jiǎn)單,也另外提供應(yīng)用內(nèi)消息推送。這在類似于聊天的場(chǎng)景里很有必要
五、JPush APNs 實(shí)現(xiàn)
具體實(shí)現(xiàn)可以參考另外一篇博客文章。
后記
??這一篇說(shuō)的是極光推送的概覽,下一篇說(shuō)一下ios客戶端的集成,謝謝大家的支持。
