2012-02-03 228 views
2

everyone,用Python推送Apple推送通知服务

我在使用下面的代码时遇到了有关APN的问题。 我发现有很多种类的源代码后,我执行的代码来实现这一服务

import socket, ssl, json, struct import binascii 

deviceToken = 'XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX' 

thePayLoad = { 
    'aps': { 
      'alert':'Hello world', 
      'sound':'default', 
      'badge':42, 
      }, 
    'test_data': { 'foo': 'bar' }, 
    } 

theCertfile = 'iphone_ck.pem' 

theHost = ('gateway.sandbox.push.apple.com', 2195) 

data = json.dumps(thePayLoad) 

deviceToken = deviceToken.replace(' ','') 

byteToken = binascii.unhexlify(deviceToken) 

theFormat = '!BH32sH%ds' % len(data) theNotification = struct.pack(theFormat, 0, 32, 

byteToken, 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() 

,我得到下面的错误。 每当我尝试在GitHub上使用PyAPN或在Google上使用APNWrapper时,我发现最后一个错误。 所以,我决定自己实施。

Traceback (most recent call last): 
    File "testAPN.py", line 38, in <module> 
    ssl_sock.connect(theHost) 
    File "/usr/lib/python2.6/ssl.py", line 309, in connect 
    self.do_handshake() 
    File "/usr/lib/python2.6/ssl.py", line 293, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLError: [Errno 1] _ssl.c:480: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 
alert handshake failure 

谁能帮我找出这个错误,或者给我一些可能的方向 完成这项工作?

+0

打必须配置问题,PyAPNS工作正常,我。 – vartec 2012-02-03 10:24:17

+1

我已经解决了这个问题,因为我犯了一个错误来赚取我的pem文件。 – vrootic 2012-04-28 03:31:51

回答