IOS推送相關總結一:原理和基礎

一: 前言

說到IOS推送功能,主要分爲:本地推送,遠程推送。在應用上“遠程推送”被應用得更廣泛,而導致很多人要說到推送的時候,想到的只有“遠程推送”。所以在一開始,我們先簡單說一下“遠程推送”服務的接入流程及簡單的代碼處理。

這裏想說個題外話。很多人一想到做什麼功能就去找有沒有第三方,以致現在很多新入行的程序員在做項目的時候就應用上大堆第三方,就連原生提供的簡單方案到不用。以“遠程推送”,網絡上一大堆第三方提供方,在很多人的博客中也看出很多人不再用原生及蘋果提供的很簡單的解決方案。在我看來是對IT從業工作的不認真和懶惰。另一方面,第三方提供的服務也是依賴蘋果官方的服務,而且還沒有蘋果官方好用和完整。就使用上來說,認認真真用好原生方案,足以應對所有情況。

二: 調用過程及原理

  • “遠程推送”是蘋果提供的一項給終端設備推送消息的服務。

  • 當用戶打開應用程序的通知中心之後,蘋果遠程推送服務器就能把消息推送到裝有該應用的設備上,具有強制性、實時性的特點,並且用戶無需打開應用都能收到推送的消息。

  • 說到遠程推送不得不說下下面這張圖,下面這張圖把遠程推送的過程大致描述勾畫了一遍,在此解析一下下圖。

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

名詞解釋:

  • Provider:消息提供者,一般是我們的後臺服務器或者第三方推送服務器後臺
  • APNs(Apple push notification server):蘋果的遠程推送服務器,可以說是消息中轉站,需要發送給iOS客戶端的消息統一發往蘋果的APNs服務器
  • notification:需要推送給iOS客戶端(iPhone或者是iPad)上的消息
  • Client App:客戶端App,一般是安裝在iPhone或者是iPad上的應用程序(App)
  • deviceToken:是唯一的由APNs根據設備和App來生成的一串數據,那麼在以下三種情況下會發生改變:
    – 同一個設備上重新安裝同一款應用
    – 同一個應用安裝在不同的設備上
    – 設備重新安裝了系統
    – APP成功安裝在一個設備上,一定時間後也會發生改變
    ps: deviceToken改變機制主要受蘋果官方機制所決定,所以在下面的內容中會講到上傳相關的話提.

過程總結:
“蘋果遠程推送服務”(APNS)是IOS平臺效爲常用而有效的服務端消息推送方案。“消息”的產生方在我們的後臺服務器,接收方可以是一個或多個指定的手機及用戶,而“消息”發送主要由蘋果提供的服務進行發送。其流程簡單總如下:

  1. 手機端安裝具有APNS服務的APP,應用打開後,系統自動對具有APNS服務的應用進行向APNS服務器進行手機及應用等唯一信息的記錄及綁定,生成deviceToken後返回到APP。
  2. 我們自己的後臺服務器要提供提交deviceToken的接口,把接收到的deviceToken進行上傳到我們自己的後臺服務器進行存儲。
  3. 當服務端想實現對某個人或某臺設備進行精準的消息投放時,通過調用APNS服務提供的接口,傳入用戶對應的deviceToken及消息payload,進行消息推送調用。
  4. APNS服務在進行設備比對後,找到對應該的設備並調用系統內部接收服務進行消息傳送。
  5. 消息傳送到指定設備後,系統對消息進行應用的比對,並進行消息提醒和顯示,並相應調用APP內部的回調方法。

三: 證書申請及生成

  1. 新建項目,打開進入。選擇targets->Capabilities在這裏插入圖片描述
  2. 選擇並打開 Push Notification
    選擇並打開 Push  Notification
  3. 選擇並打開 Background Modes,選擇Remote Notification,Background Fetch
  • PS: Remote Notification 主要用於靜默推送,Background Fetch是IOS 7中開始提出的後臺不定時運行機制。
  • 這兩個功能大家可以按需打開,或者都不開啓。就Remote Notification而言,個人感覺很多時候都會用到,而且十分好用,在後面的博文中會重點說明。
    在這裏插入圖片描述
  1. 用瀏覽器打開進入 apple development,進入主頁
    在這裏插入圖片描述
  • 選擇 證書及配置頁面
    在這裏插入圖片描述
  1. 選擇對應該的項目證書,點擊打開
    在這裏插入圖片描述
    下拉,選擇Push Notification
    在這裏插入圖片描述
  • 點擊“配置”,打開證書配置頁面
    在這裏插入圖片描述
  1. 生成本地Certificate證書
  • 打開系統“鑰匙串訪問”,選擇“證書助理”,“從證書頒發機構請求證書…”
    在這裏插入圖片描述
  • 選擇“存儲到磁盤”,點擊繼續
    在這裏插入圖片描述
  1. 生成本地證書文件“CertificateSigningRequest.certSigningRequest”,回到 apple development剛纔的上傳證書頁,點選“開發證書”選項,進入到證書上傳頁。
    在這裏插入圖片描述
  • 點擊下一步,完成證書上傳
    在這裏插入圖片描述
  • 點擊“下載”,把證書下載到本地,雙擊,完成證書的本地安裝。
    PS: APNS推送證書分“開發”/“發佈”證書。“開發”證書用於程序開發階段測試,“發佈”證書用於上線App Store後的上線應用階段。

證書後成後還要生成相關p12密鑰文件,提供給服務端。服務端通過密鑰文件,與APNS服務建立通訊連接,並在需要的時候,發送推送消息到APNS服務器。APNS服務器在接收到請求後,再下發消息到對應該設備上。

生成相關密鑰文件流程如下:

  • 打開系統“鑰匙串訪問”,到剛纔下載安裝的證書
    在這裏插入圖片描述
  • 右擊,選擇“導出…”,生成p12文件
    在這裏插入圖片描述

四: 證書過期處理

Push Notification證書有它的過期時間。打開系統“鑰匙串防問”,先中對應該的證書,雙擊打開證書詳情如下:
在這裏插入圖片描述
當證書快要過期前,會提前通過郵件的方式通知用戶。而真到了過期的時候,本地“鑰匙串防問”中查看對應的證書,會發現前面出現打叉的圖案,以表示證書失效,如下圖:
在這裏插入圖片描述
當證書失效,時很多人會問“是否要重新搞一下證書,重新打包上一個新的包呢?”
其實只要重新處理一下證書就可以了,不用重新上包,新證書就可以用了。

重新生成新的證書:
- 瀏覽器打開進入apple development,打開並選擇對應該的app bound Id。
- 查看並刪除過期的推送證書(如發佈證書)
- 重新本地構建CertificateSigningRequest.certSigningReques證書,上傳生成新的推送證書。
- 下載新的推送證書,雙擊進行安裝(可提前本地刪除舊的過期證書)。
- 重新導出新的p12文件,並提供給服務端。

過程可以參考上面首次創建流程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章