自己动手搭建苹果推送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, 剩下的我们下次再看看

 

posted @ 2017-02-21 00:52 周希 阅读(...) 评论(...) 编辑 收藏