推送通知在PHP [英] Push notification in PHP

查看:266
本文介绍了推送通知在PHP的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图执行我的PHP脚本来推notifcation发送到我的iPhone后,得到这个错误。

我曾尝试一切,没有什么作品。我认为,这意味着我的 ck.pem 是错误的,但林不知道,如果它的key.pem或者说是错误的cert.pem。

请帮忙

脚本

  //这本假的设备ID:
$ deviceToken ='9870h8v088bj29u080af894jj67klfgcv9mmm79k8e4l23456h908743n093e359';//假密码:
$密码='123456';//这里把你的警告信息:
$消息='新邮件';
   ////////////////////////////////////////////////// //////////////////////////////$ CTX = stream_context_create();
stream_context_set_option($ CTXSSL,的local_cert',​​'ck.pem');
stream_context_set_option($ CTX,'SSL','密​​码',$密码);//打开到APNS服务器的连接
$计划生育=在stream_socket_client(
                           SSL://gateway.sandbox.push.apple.com:2195',$犯错,
                           $ errstr,60,STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT,$ CTX);如果(!$ FP)
退出(无法连接:$犯错$ errstrPHP_EOL);回声连接到APNS。 PHP_EOL;//创建有效载荷体
$身体['APS'] =阵列(
                     '警报'=> $消息,
                     声音= GT; '默认',
                     '徽章'=> '1'
                     );// EN code中的有效载荷为JSON
$有效载荷= json_en code($体);//生成二进制通知
$味精= CHR(0)。包('N',32)。包(H *',$ deviceToken)。包('N',strlen的($有效载荷))。 $有效载荷;//它发送到服务器
$结果=的fwrite($计划生育,$味精,strlen的($味精));如果(!$结果)
回声消息发送失败。 PHP_EOL;
其他
回声的消息成功传递。 PHP_EOL;//关闭与服务器的连接
FCLOSE($ FP);?>

错误

 警告:在stream_socket_client():SSL操作失败,code 1. OpenSSL的错误消息:
错误:14094416:SSL例程:SSL3_READ_BYTES:SSLv3的警报证书不明/用户/ daveking /桌面/应用程序认证/在线21 simplepush.php警告:在stream_socket_client():失败,使密码在/用户/ daveking /桌面/应用程序认证/在线21 simplepush.php警告:在stream_socket_client():无法连接到SSL://gateway.sandbox.push.apple.com:2195(未知错误)在/用户/ daveking /桌面/应用程序认证/ simplepush.php第21行
连接失败:0


解决方案

你尝试过什么是什么呢?

<一个href=\"http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12\">http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12
<一href=\"http://www.raywenderlich.com/3525/apple-push-notification-services-tutorial-part-2\">http://www.raywenderlich.com/3525/apple-push-notification-services-tutorial-part-2

这是有关生成证书的,使得PHP脚本等一个很好的教程。

I get this error after trying to execute my php script to send a push notifcation to my iphone.

I have tried everything and nothing works. I believe that this means my ck.pem is wrong but im not sure if its the key.pem or the cert.pem that is wrong.

Please help

Script

    // This this a fake device id:
$deviceToken = '9870h8v088bj29u080af894jj67klfgcv9mmm79k8e4l23456h908743n093e359';

// fake password:
$passphrase = '123456';

// Put your alert message here:
$message = 'New Message';
   ////////////////////////////////////////////////////////////////////////////////

$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',
                     'badge' => '1'
                     );

// 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);

?>

Error

Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages:
error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown in     /Users/daveking/Desktop/App Certificates/simplepush.php on line 21

Warning: stream_socket_client(): Failed to enable crypto in /Users/daveking/Desktop/App Certificates/simplepush.php on line 21

Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /Users/daveking/Desktop/App Certificates/simplepush.php on line 21
Failed to connect: 0 

解决方案

What have you tried exactly?

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12 http://www.raywenderlich.com/3525/apple-push-notification-services-tutorial-part-2

This is a good tutorial on generating the certificate, making the php script etc.

这篇关于推送通知在PHP的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆