我已启用Apple Push Notification(APN)服务配置我的iOS应用程序。我能够将通知发送给使用PHP和Python 3脚本的设备。我在本地机器上测试了本地服务器。但现在我需要在Python2中编写脚本。iOS中的Apple推送通知(APN)服务服务器端Python 2脚本
下面是我写的脚本,当我运行这个我什么都没有。无论是通知我的设备还是错误的命令行。
import socket, ssl, json, struct
import binascii
import os
deviceToken = 'my_device_tocken_without_spaces'
thePayLoad = {
'aps': {
'alert':'My first push notification!',
'sound':'default'
}
}
theCertfile = 'ck3_2.pem'
theHost = ('gateway.sandbox.push.apple.com', 2195)
data = json.dumps(thePayLoad)
theFormat = '!BH32sH%ds' % len(data)
theNotification = struct.pack(theFormat, 0, 32, deviceToken, len(data), data)
ssl_sock = ssl.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM), certfile = theCertfile)
ssl_sock.connect(theHost)
ssl_sock.write(theNotification)
ssl_sock.close()
我错过了什么?我如何检查错误发生在哪里?
我使用XAMPP在本地主机上运行了PHP脚本,并且我在命令行中运行了Python脚本,因为我无法使用XAMPP设置Python,因为我已经发布了一个问题here。
是的,你是正确的。代码几乎是正确的,它运行在远程服务器内部,但不是本地机器。无论如何,当试图在本地机器上运行时出现的错误是“File”/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py“,第333行,在连接 self ._real_connect(addr,False) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py”,第314行,在_real_connect self.ca_certs,self.ciphers) ssl.SSLError:[Errno 336265218] _ssl.c:351:错误:140B0002:SSL例程:SSL_CTX_use_PrivateKey_file:系统库文件' – AnujAroshA 2014-12-17 07:10:10
您的证书文件路径是否正确?或有访问权限?我发现类似的错误http://stackoverflow.com/a/6806097/625144 – Gihan 2014-12-19 17:40:20