這似乎是工作的罰款與我的PHP腳本,但不是我的python腳本:蘋果推送通知不工作的蟒蛇
from APNSWrapper import *
wrapper = APNSNotificationWrapper('ck.pem', True)
for token in ['<Device token>']:
token = binascii.unhexlify(token)
apn = APNSNotification()
apn.token(token)
alert = APNSAlert()
alert.body('ab sent you a message.')
apn.appendProperty(APNSProperty('content', 'Yo'))
apn.appendProperty(APNSProperty('path', 'chat/1236'))
apn.alert(alert)
apn.sound()
wrapper.append(apn)
wrapper.notify()
錯誤:
Traceback (most recent call last):
File "pushnot.py", line 15, in <module>
wrapper.notify()
File "build/bdist.macosx-10.9-intel/egg/APNSWrapper/notifications.py", line 194, in notify
File "build/bdist.macosx-10.9-intel/egg/APNSWrapper/connection.py", line 215, in connect
File "build/bdist.macosx-10.9-intel/egg/APNSWrapper/connection.py", line 161, in connect
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 333, in connect
self._real_connect(addr, False)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 323, in _real_connect
self.do_handshake()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ssl.py", line 305, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno 1] _ssl.c:504: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
PHP腳本(工作):
<?php
// Put your device token here (without spaces):
$deviceToken = '<Device token>';
// Put your private key's passphrase here:
$passphrase = '';
// Put your alert message here:
$message = 'My first push notification!';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
它剛剛停止工作突然。不知道爲什麼。
PHP腳本使用相同的pem文件和設備令牌。
可能是你的腳本無法找到的.pem文件。再次提供.pem文件的物理路徑。 – Sandeep 2014-10-05 04:30:49
我如何檢查它是否找不到pem文件?我已經把這兩個文件放在同一個目錄 – bobo2000 2014-10-05 10:54:48
@Sandeep我使用相同的PHP代碼發送推送通知到iOs設備。在終端上打印「已連接到APNS 消息已成功發送」但未收到任何通知到設備上。請幫忙。 – sau 2015-06-16 10:05:32