自己動手搭建蘋果推送Push服務器


今天我們來說下怎么自己建一個Push推送服務器, 當然還是用的蘋果的APNS 這里我們講的的自己服務器端的實現

 

在做推送服務器之前我們要先做一些准備動作

#1. 確保你的App ID有啟用PushNotifications

這個可以在你的開發者賬號中心里面看看你的App ID的Push Notification是否為Enable

如果不是的話就點Edit設置並創建自己的證書, 具體怎么設置和創建證書大家可以看:

http://www.fx114.net/qa-202-108331.aspx

按照上面做完后, 我們把自己的推送證書下載下來, 如果是開發證書下載的名字應該是:aps_development.cer

雙擊安裝, 然后在鑰匙串中找到他並導出為p12格式, 這里我們取名: DevelopPush.p12

好了現在我們有一個cer證書跟一個p12文件, 

 

現在我們要用openssl來合成PEM證書, 應為python apns要用PEM格式證書

在終端輸入openssl試試看, 如果報錯的話就安裝一下

sudo easy_install pyOpenSSL

 

合成PEM證書

  1)轉換公鑰

openssl x509 -in aps_developer.cer -inform der -out public.pem

  2)轉換私鑰

openssl pkcs12 -nocerts -in DevelopPush.p12 -out private.pem

  (這時候要輸入密碼的)

  有了這兩個pem文件其實就可以測試一下能否連通蘋果的服務器了,網上有,就簡寫了

telnet gateway.sandbox.push.apple.com 2195 (測試是否能連通蘋果的推送測試服務器)
Trying 17.172.232.226...
Connected to gateway.sandbox.push-apple.com.akadns.net.
Escape character is '^]'.

  要是出現上面的結果就ok了,然后測試剛才的兩個pem:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert public.pem -key private.pem

  輸完密碼之后,要是輸出一堆提示信息就算是ok了

 

下面我們開始准備寫推送服務器

首先安裝apns

sudo easy_install apns

 

然后在證書的路徑下創建一個pushservice.py, 代碼如下:

import time
from apns import APNs, Frame, Payload

apns = APNs(use_sandbox=True, cert_file='public.pem', key_file='private.pem')
          
# Send a notification
token_hex = 'aefa14337e084a6423529dd262f36de607a019529f4a0a4e2b5e5ae885dec578'
payload = Payload(alert="Hello World!", sound="default", badge=1)
apns.gateway_server.send_notification(token_hex, payload)

執行看看, 如果客戶端沒有收到通知的話就檢查以下三點

1. 證書是否正確, 重新下載aps_developement.cer試試看

2. 手機設置中通知功能是否有打開

3. 項目中以下部分是否有打開

 

目前我們已經實現了推送一個alert, 剩下的我們下次再看看

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM