當在建置有手機端 client 的後台時,總會需要有 notification 功能,針對 android 手機需要用 GCM 而 iOS 則需要 APNS,在 AWS 上有 AWS SNS的服務可以協助開發者再串接兩種 notification 時有更統一的方式。下面跟大家分享最近串 APNS over AWS SNS的流程。

  • 申請 APNS 所需要的 key
    1. 打開 Mac電腦的 “鑰匙圈存取" -> “憑證輔助程式" -> “從憑證授權要求憑證"
    2. 使用 default email 資訊產生憑證 (CSR)並存到磁碟
    3. 登入 apple developer,進入 “Certificates, Identifiers & Profiles"並建立新的 App ID,記得 enable “Push Notifications"
    4. 建好後按 “Edit" 進去按 “Create Certificate"將之前建好的 CSR 上傳建立新 SSL Certificate並下載 “aps_development.cer"
    5. 點擊 “aps_development.cer" 並到 “鑰匙圈存取" 中案右鍵產生 .p12檔
    6. 在 apple developer 下載新的 Provisioning Profile,App ID要選擇剛剛建立的那一個
  • 測試 Key 使否可用
    1. 用 .cer 產生 .pem : openssl x509 aps_development.cer -inform der -out pushcert.pem
    2. 用 .p12產生 .pem,中間會詢問之前建 key 時輸入的密碼:  openssl pkcs12 -nocerts -out pushkey.pem -in XXX.p12
    3. openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert pushcert.pem -key pushkey.pem
  • 建立手機端 swift2 程式
    • 建立 project, Bundle Identifier 須和 App ID 內設定相同
    • 在 “Build Settings" 的 “Code Signing" 中選擇剛剛下載的 “Provisioning Profile"
    • 修改 AppDelegate.swift
    • Sample Code

螢幕快照 2016-03-02 下午2.37.13

螢幕快照 2016-03-02 下午2.37.42

  • 設定 AWS SNS
      • 進入 AWS SNS console
      • create platform application
      • 填入名稱,將之前建立的 .p12檔載入,輸入建立時的 password後按 “load Credentials from File" 會自動帶入 “Certificate" 和 “Private key"

    sns1

  • 建立完成後,點進去後測試送訊息需要先 “Create Platform Endpoint"
  • 將手機端取得 token 填入
  • 建好後送測試訊息按 “Publish to Endpoint"手機端即可收到訊息

Reference

https://docs.aws.amazon.com/zh_cn/sns/latest/dg/mobile-push-apns.html