我已啓用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