天天看點

iOS 推送通知

引言:

推送通知是移動終端保持永遠線上概念的一個核心方式,當人們離開桌面網際網路以後想在第一時間收到與之相關的資訊時.推送通知的出現就再好不過了.

但是,要注意不可濫用,繁多的非必要性推送消息會給使用者造成非常煩躁的心理.作為使用者體驗的一部分,那就已經在往失敗的方向走了.

推送通知共為兩種類型,分别是本地推送通知和遠端推送通知. 本文将對這兩類通知的使用展開詳細讨論.

參考資料:

1: ios本地通知和遠端通知

<a href="http://wangjun.easymorse.com/?p=1482" target="_blank">http://wangjun.easymorse.com/?p=1482</a>

2: 蘋果遠端通知服務申請激活例圖 (外國佬寫的.)

<a href="http://mobiforge.com/developing/story/programming-apple-push-notification-services" target="_blank">http://mobiforge.com/developing/story/programming-apple-push-notification-services</a>

3:書籍參考:iPhone 開發秘籍 第16章 推送通知.

使用:

首先是申請證書的網址

<a href="https://developer.apple.com/ios/manage/overview/index.action" target="_blank">https://developer.apple.com/ios/manage/overview/index.action</a>

登入成功以後,進入iOS 配置管理的 首頁面.

第一步操作是去 建立一個新的App IDs建立成功後,會需要提供安全證書來激動推送服務,如下圖:

選擇存儲到磁盤以後,生成一個檔案名稱為(簡稱CSR): CertificateSigningRequest.certSigningRequest

回到Apple頁面 将這個送出并提示激動成功.

激活成功後的App  IDs 提供下載下傳 開發版或是釋出版的主動推送證書(aps_development.cer),如果需要做伺服器方面的主動推送的話,就必須要下載下傳這個檔案來使用推送服務了.

第二步要為App提供接受推送許可的證書,點選Provisioning進行設定,添加一個新的許可,選擇剛剛新建立的App IDs. 再選擇可以調試的iPhone 裝置.

最後,同樣是下載下傳下來: YsyPushMessageDemo.mobileprovision輕按兩下該證書,讓其加載一次.

接下來,進入iOS工程,選擇使用該證書來調試.

紅圈中,全部設定剛剛加載的許可證書.

那麼到這裡,關于證書類的 準備工作,已經全部準備就緒.

在這裡再此強調一次,每個檔案的具體作用

1: CertificateSigningRequest.certSigningRequest : 為生成App IDs 而用

2: aps_development.cer 為開發主動推送服務而用到的證書

3: YsyPushMessageDemo.mobileprovision 為App 接受推送通知的許可服務

主動推送的Push 代碼 及使用,請參考一開始介紹的第一篇部落格

接下來,說說收到推送通知代碼方面.

1:申請本App需要接受來自服務商提供推送消息,

2:申請發出後,如果成功,委托會自動傳回一個裝置令牌(toKen),如果失敗,将會進入另外一個失敗的委托

3:将裝置令牌碼提供給服務商,以供推送到具體的手機上面. 如果遠端推送消息來了,使用者點選了推送消息,或者應用已經處于打開狀态,系統都會自動調用以下委托:

4: 第三點裡面的介紹的情況是應用程式已經處于運作狀态,上面的委托才會被執行,如果應用程式處于未啟用狀态,此時又需要響應消息,那麼需要以下委托處理.

5:清空通知中心已有的推送消息,隻需要将指定App 的 Badge 設定為 0即可

6:主動推送的字元串必須符合如下Json數組的格式,才能正确推送到手機當中.

    @"{

       //自定義參數

       \"userinfo\":

              {

                 \"name\":\"remote notice\"

              },

       //标準寫法

       \"aps\":

                 \"alert\":

                           {

                              \"action-loc-key\":\"Open\",//支援多語言

                              \"body\":\"messgae content\"//消息正文

                           },

                 \"badge\":1,//為App 的icon  标記 具體數值

                 \"sound\":\"default\"

//播放的音頻檔案,default 表示系統預設的選擇列鈴聲

             } 

     }";