自己动手搭建苹果推送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=)
apns.gateway_server.send_notification(token_hex, payload)
执行看看, 如果客户端没有收到通知的话就检查以下三点
1. 证书是否正确, 重新下载aps_developement.cer试试看
2. 手机设置中通知功能是否有打开
3. 项目中以下部分是否有打开


目前我们已经实现了推送一个alert, 剩下的我们下次再看看
自己动手搭建苹果推送Push服务器的更多相关文章
- (转)苹果推送通知服务教程 Apple Push Notification Services Tutorial
本文译自http://www.raywenderlich.com/.原文由iOS教程团队 Matthijs Hollemans 撰写,经原网站管理员授权本博翻译. 在iOS系统,考虑到手机电池电量,应 ...
- 苹果推送(APNs)ios push小结
把app删除后就推送不成功了,可以看出deviceToken应该是设备+app来一起识别的,重新安装后仍然为同一个 简介 推送服务APNs(Apple Push Notification servic ...
- IOS学习笔记—苹果推送机制APNs
转自:唐韧_Ryan http://blog.csdn.net/ryantang03/article/details/8482259 推送是解决轮询所造成的流量消耗和 电量消耗的一个比较好的解决方案, ...
- 苹果推送通知服务APNs编程(转)
add by zhj: 下面的几篇文章也非常好, http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios- ...
- 苹果推送服务器端证书配置.pem生成
做苹果推送服务器,很重要的一步,就是生成与苹果APNS连接的证书,一般是.pem文件: 首先在苹果开发者中心 生成 aps_devlopment.cer文件:然后下载:双击导入钥匙串: 打开钥匙串 - ...
- 本地git仓库推送到服务器自建的git仓库实现目录文件同步教程
首先,先在服务器上安装git,如果有git的话就不用走这一步了 yum安装git [root@iZuf6fazwjb6lb3z82smzoZ ~]# cd src/ [root@iZuf6fazwjb ...
- Android 与 iOS 推送 Push Notification 的区别
Android 安卓使用 GCM (Google Cloud Messaging) 接收推送,然后应用根据实际情况决定做什么反应,比如显示一个 Notification. 所以安卓下,推送 Push ...
- 信鸽推送Push API
目录 信鸽推送 push API 0. 基本 push 1. 根据 token list,推送到android和ios 2. 推送到android和ios 所有用户 信鸽推送 push API 参考: ...
- Git撤回已经推送(push)至远程仓库提交(commit)的版本
背景 所以,经常会遇到已经提交远程仓库,但是又不是我想要的版本,要撤下来. 回退版本一般使用git reset,又分为: # 不删除工作空间改动代码,撤销commit,不撤销git add . git ...
随机推荐
- Druid的简介及功能
Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSou ...
- jquey插件开发
1.概述 jquery插件开发的主要方法有三种: 1.通过$.extend()来扩展jQuery,即在jQuery命名空间下扩展属性,直接在$对象下调用,不需要再dom下调用,也无法在dom元素下调用 ...
- 笔记-Python基础教程(第二版)第一章
第一章 快速改造:基础知识 01:整除.乘方 (Python3.0之前 如2.7版本) >>> 1/2 ==>0 1/2整除,普通除法: 解决办法1: 1.0/2.0 ==& ...
- div+CSS实现段落首行缩进两个字符
段落前面空两个字的距离,不要再使用空格了,用CSS实现段落首缩进两个字符.应该使用首行缩进text-indent.text-indent可以使得容器内首行缩进一定单位.比如中文段落一般每段前空两个汉字 ...
- mysql 用户管理 权限控制
添加用户 insert into mysql.user(Host,User,Password) values("%","shenen",password(&qu ...
- origin从图中获得数据
有Origin的原图,即利用Origin的"copy page"功能直接拷贝到文字处理软件的数据图,对于这种图,双击用Origin打开后,双击要导出数据的权限,打开"pl ...
- check_arp
检查arp表是否满 #!/bin/bash LANG=C test -e /bin/date && timestamp=`/bin/date +%s` ARP=`which arp` ...
- 关于P,NP,NPC和NP-hard的通俗解释
这些概念以前老是犯糊涂,今天整清楚.摘要:P: Polynomial SolvableNP: Non-determinstic Polynomial Solvable 0)词语解释:Polynomia ...
- because of many connection errors; unblock with 'mysqladmin flush-hosts
环境:linux,mysql5.5.37 错误:Host is blocked because of many connection errors; unblock with 'mysqladmin ...
- 关于solaris中 crontab -e 出现数字0的解决办法
解决方法: 通过网络,发现要设置编辑器的环境变量 $ EDITOR=vi $ export EDITOR$ echo $EDITORvi$ crontab -e OK