利用自己写的简单php测试pem是否正确,ios推送是否完好

  • 由于写php的同学始终不相信自己服务器发送推送有问题,为了让他打脸,我不得不自己亲自动手写一个简单的php发送推送测试了
  • 首先生成pem,相信很多人都会也可以上网直接查。很简单
  • 导出两个p12

780836-20180726133527184-1269672950.png

密码暂时设为123456,名字取为cert.p12 key.p12
  • 将导出的两个p12合成pem,在终端输入
openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12

openssl pkcs12 -nocerts -out key.pem -in key.p12

openssl rsa -in key.pem -out key.unencrypted.pem

cat cert.pem key.unencrypted.pem > apns-dev.pem
  • 将以下代码复制粘贴到一个文件,文件取名push.php,放在一个非中文名的文件夹下(我们敲代码的都不会使用中文名文件夹啦!),将生成pem也放在这个文件夹下:
<?php  
    $deviceToken= '1a7f863ae00c1a52a5b55798ef2ea0319f748b64edb70ef3d5971fccefff6c61'; //没有空格  
    $body = array("aps" => array("alert" => 'this is test',"badge" => 2,"sound"=>'warning.caf'));  //推送方式,包含内容和声音
    $ctx = stream_context_create();  
    //如果在Windows的服务器上,寻找pem路径会有问题,路径修改成这样的方法:  
    //$pem = dirname(__FILE__) . '/' . 'apns-dev.pem';  
    //linux 的服务器直接写pem的路径即可  
    stream_context_set_option($ctx,"ssl","local_cert","apns-dev.pem");
    $pass = "";
    stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);  
    //此处有两个服务器需要选择,如果是开发测试用,选择第二名sandbox的服务器并使用Dev的pem证书,如果是正是发布,使用Product的pem并选用正式的服务器  
//    $fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);  
    $fp = stream_socket_client("ssl://gateway.sandbox.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    if (!$fp) {  
        echo "Failed to connect $err $errstrn";  
        return;  
    }  
    print "Connection OK\n";  
    $payload = json_encode($body);  
    $msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;  
    echo "sending message :" . $payload ."\n";  
    fwrite($fp, $msg);  
    fclose($fp);
?>
  • 在终端输入:
php push.php
  • 打完收工。

转载于:https://www.cnblogs.com/RoysPhoneBlog/p/9371336.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值