推送通知 Swift 菜鸟指南
“推送通知?噢,不!”當我被告知需要在一個 iOS App 中實現推送通知時,我下意識就叫了一声,我相信你也會有和我一樣的反應。不是因為推送通知有多難,而是因為它超多的準備步驟,哪怕只想測試一條推送通知,幾乎每個開發者都会头大如斗。但是,在正式開始之前,先讓我們弄清幾件事情。 當 App 不咝械臅r候,如果有某些事情发生时需要提醒用戶关注,那就需要用到某種通知技術。作為一個 iOS 開發者,我們知道 iOS 支持兩種通知:本地通知和推送(或者遠程)通知。前者是由 App 自己註冊和发起的,實現起來要相对簡單。實際上,我們可以在這裡 和 這裡找到一堆較早的教程,是關於本地通知的。 推送通知則不是由 App 自己发起的。它由另外的服務(叫做提供者)發起,這個服務通常是指某個 web 服務器,它通常會同時發給多台設備。通過推送通知,編寫 App 的人可以向用戶發送信息,可以隨機發送,也可以有計劃地發送,可以定制消息體,也可以使用默認的消息體。请看這裡,你会對蘋果推送通知有一个很好的了解。 從一個提供者發送一條消息到一個或多個設備,需要使用一個強制的通道。那就是蘋果推送通知服務器,或APN 服务器。由這些服務器將推送通知按指定路線發送到正確的設備,在提供者提交后幾秒,這些消息就會被送達。簡而言之,遠程通知的生命週期可以簡化為: 提供者 >> APN 服務器 >> 目標設備 我建議你看一下官方文檔,这里介绍了推送通知的工作機制。 一個 App 要想接收到推送通知,需要經過幾個步驟。這些步驟可以分為兩部分:編碼部分以及各種證書、設備描述文件的制作。編碼部分很簡單,只是一些模式化的代碼。困難的是第二部分,這裡有許多額外的工作需要到不同的地方完成,比如 Mac OS 鑰匙串、項目设置以及蘋果開發者成員中心。 此外,遠程通知有兩種:沙盒環境的遠程通知,用於開發階段進行測試,以及生產環境的遠程通知,用於生產階段。如果你在沙盒環境中發出的通知成功被 App 收到,並且你前面經歷的步驟都是正確的,那么就可以確認生產環境也基本 OK。自然,蘋果的測試服務器只能用來發送沙盒通知,它不能用於生產目的。 本教程的目的很簡單:我們將在一個示例 App 中啟用推送通知,然後用沙盒環境發送幾條通知以確認其工作正常。希望在你下一次準備將推送通知特性添加到 App 中時,這篇教程能給你提供一些助力。最主要的是,本教程能幫你解決在使用推送通知的過程中遇到的種種困惑和煩惱。 示例 App我在正式進入教程之前的第一件事情,總是先介紹將在教程中實現的示例 App。很多時候,我還會提供一個開始項目,但這次例外。 對於這個教程中的示例 App,你需要做的就是用 Xcode 創建一個新的 iOS 項目,然後就完了。完全不需要加入任何東西或者控件。因為我們不會用這個 App 來測試 App 的內部功能,只是用它來接收推送通知而已。 無所謂項目名稱是什麼,你輸入任何名字都可以。對於我來說,我喜歡將項目命名為PNDemo。 創建好新項目,我們就可以暫時把它拋到一邊。 重要提示: 在開始進入本教程的具體內容之前,我假設你已經具備所需的前提條件,并進行一些簡單約定。它們是:
第一步: 證書簽名請求示例項目已經建好,先把它扔到一邊,準備進入整個準備過程的第一個環節。在這一步,我們將創建一個證書簽名請求(CSR)文件,後面我們創建推送通知專用的 SSL 證書時會用到這個文件。 這裡我們會使用鑰匙串Mac App,你可以通過 Lanuchpad 或者 Spotlight 搜索找到并啟動它。如果你不熟悉鑰匙串,操作時不要刪除其中的任何東西。 在鑰匙串中,打開Keychain Access > Certificate Assistant > Request a Certificate From a Certificate Authority… 菜單,如下圖所示: 在彈出的窗口中,User Email Address 和 Common Name 字段是必須填寫的。填完后選中Saved to disk 選項,這樣可以將 CSR 文件保存到磁盤,這個文件會在後面的蘋果開發者網站中用到。 點擊Continue并選擇 CSR 文件保存的文件路徑。我創建了一個單獨的文件夾,將所有本教程中用到的文件都放在一起(叫做PNDemo Files,建議你也這樣做),文件名則保持默認的文件名不變。 當你看到創建成功的消息后,點擊Done按鈕。這個 CSR 文件將保存到磁盤,我們將在蘋果開發者網站中用它來對其它證書進行簽名。 第二步: 創建 App ID第二步是在蘋果開發者網站中創建新的App ID。App ID 是我們的 App 區別于其他 App 的唯一標識,它讓 APN 服務器能夠正確將通知發送到目的地。正如你將會看到的,我們將 App ID 和許多東西綁定在一起:推送通知證書、設備描述文件(讓我們的 App 能在測試設備上咝校 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Swift - 按钮(UIButton)的用法
- ruby-on-rails – Rails:ActiveSupport的未定义方法`prima
- 将正则表达式匹配的强大功能带给 SQL
- Flex中双击事件MouseEvent.DOUBLE_CLICK不起作用的解决办法
- Swift39/90Days - 如何实现圆形加载进度条
- c# – 从现有的IList实例创建一个新实例并进行修改
- postgresql 异步流复制hot standby搭建
- c# – TreeView.ItemContainerGenerator.ContainerFromItem
- sqlite简单实用(整理)
- 读取applicationContext.xml报错