它似乎可以很好地与我的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()
错误:
^{pr2}$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文件和设备令牌。在
也许您可以在这里查看建议使用综合库PyAPNS的答案:https://stackoverflow.com/a/26290076/324490
我自己也经历过同样的问题,最终我找到了一个解决办法,指出了根本原因。在
“Apple sandbox网关停止支持SSL3。”
https://bitbucket.org/sardarnl/apns-client/pull-request/10/apple-sandbox-gateway-stopped-supporting/diff
希望这有帮助!在
相关问题 更多 >
编程相关推荐