4,250
社区成员
发帖
与我相关
我的任务
分享
<?php
$deviceToken = '70449ecf02f227e29b777baa15a74756e03986493e9b5d20b765df4627bd7afb';
$passphrase = '955999';
$message = 'My first push test!';
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apns-dev.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
echo "<br/>----------1----------<br/>";
$fp = stream_socket_client(
'ssl://gateway.sandbox.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
echo "<br/>----------2----------<br/>";
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo "<br/>----------3----------<br/>";
echo 'Connected to APNS <br/>' . PHP_EOL .'<br/>';
$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 '<br/>----------4----------Message not delivered-------------------' . PHP_EOL;
else
echo '<br/>----------5----------Message successfully delivered-------------------' . PHP_EOL;
// Close the connection to the server
fclose($fp);
?>
<?php
$deviceToken = '70449ecf02f227e29b777baa15a74756e03986493e9b5d20b765df4627bd7afb';//推送令牌
$data['aps']=array(
'alert'=>'test message',
'sound'=>'default'
);
push($data,$deviceToken);
function push($data,$deviceToken){
$passphrase='123456';//密码
$ckfile="apns-dev.pem";//ck 文件存放路径
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $ckfile);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
//测试服务器
$fp = stream_socket_client('tls://gateway.sandbox.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
//正式
//$fp = stream_socket_client('tls://gateway.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if(!$fp){
echo $err.' - '.$errstr;
}
$payload=json_encode($data);
$pushdata = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $pushdata, strlen($pushdata));
if(!$result){
echo $result;
}
fclose($fp);
}
?>
<?php
echo "----------";
echo(time());
echo "----------<br/>";
$deviceToken = '70449ecf02f227e29b777baa15a74756e03986493e9b5d20b765df4627bd7afb';//也是正确的
$data['aps']=array(
'alert'=>'test message',
'sound'=>'default'
);
push($data,$deviceToken);
echo "<br/>----------1-----------<br/>";
function push($data,$deviceToken){
$passphrase='955999';//密码是正确的
$ckfile="apns-dev.pem";//ck 文件存放路径
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $ckfile);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
//测试服务器
$fp = stream_socket_client('tls://gateway.sandbox.push.apple.com:2195',$err,$errstr, 600, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
//60改成600还是一样,没有任何反应
//正式
//$fp = stream_socket_client('tls://gateway.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if(!$fp){
echo $err.' - '.$errstr;
echo "<br/>----------2-----------<br/>";
}
echo "<br/>----------3-----------<br/>";
$payload=json_encode($data);
$pushdata = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $pushdata, strlen($pushdata));
if(!$result){
echo $result;
}
fclose($fp);
echo "<br/>----------4-----------<br/>";
}
?>
输出结果是:
----------1458204387----------
----------3-----------
----------4-----------
----------1-----------
这是表示都成功了吗?可是手机没有反应啊
$deviceToken = 'xxx';//推送令牌
$data['aps']=array(
'alert'=>'test message',
'sound'=>'default'
);
push($data,$deviceToken);
function push($data,$deviceToken){
$passphrase='123456';//密码
$ckfile="ck.pem";//ck 文件存放路径
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $ckfile);
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
//测试服务器
$fp = stream_socket_client('tls://gateway.sandbox.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
//正式
//$fp = stream_socket_client('tls://gateway.push.apple.com:2195',$err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if(!$fp){
echo $err.' - '.$errstr;
}
$payload=json_encode($data);
$pushdata = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
$result = fwrite($fp, $pushdata, strlen($pushdata));
if(!$result){
echo $result;
}
fclose($fp);
}