php简单实现iospush的消息推送的方法

php简单实现iospush的消息推送的方法,这个方法是之前跟ios团队在调ios的消息推送时候简单写的一个方法,不过现在好像苹果有推出一个php版的消息推送类,大家可以去下载来试一试。

<?php
 
/**
   * 关于ios 的push的文档,包括ios的正式版,测试版的push
   * @param $file_pem 表示的是证书的路径
   * @param $deviceToken 表示的是IOS devictoken
   * @param $param 表示的是参数格式,表示里面包括: alert 表示push的内容,badge,sound,type,ct 组成的数组
   * @param $bool 表示的是应用是正式版还是测试版,当为true时时正式版,false 表示是测试版
*/
function push_ios_test($file_pem,$deviceToken,$param,$bool=true)
{
     if($bool){
        $url="ssl://gateway.push.apple.com:2195";
     }else{
        $url="ssl://gateway.sandbox.push.apple.com:2195";
     }
     $file_name=$file_pem;
     if(!file_exists($file_name)){ echo " 的应用证书不存在!"; exit();}
     if(empty($devictoken)){ echo "devictoken 为空!"; exit();}
     if(empty( $param['alert'])){echo "push的内容为空!"; exit();}
     $devictoken=trim($devictoken);
      
     $badge=empty($param['badge'])? 1 : $param['badge'];
     $sound=empty($param['sound'])? 1 : $param['sound'];
     $type=empty($param['type'])? 4 : $param['type'];
     $ct=empty($param['ct'])? 1 : $param['ct'];
      
     $ctx = stream_context_create();
     stream_context_set_option($ctx, "ssl", "local_cert",$file_name );
     $fp = stream_socket_client($url, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);          
     if (!$fp) {
        echo  "Failed to connect $err A $errstrn";
     }
     $deviceToken=trim($value); 
     $payload = '{"aps":{"alert":"'. $param['alert'].'","badge":'.$badge.',"sound":"'.$sound.'"},"type":'.$type.',"ct":"'.$ct.'"}';
     $msg = chr(0) . pack("n",32) . pack("H*", $deviceToken) . pack("n",strlen($payload)) . $payload;
     $a = fwrite($fp, $msg);
      if(!$a){
         echo "Send Push Fail!";
      }else{
         echo "Send Push Success!";
      }
 
     fclose($fp);
}
?>

这个是简单的实现了ios 的消息推送,这个需要devicetoken,应用的证书,相对应的各项参数才能发的出去,不过到现在也没明白,有时候群发ios的消息推送的时候,会有些设备接收不到,有些就可以接收得到,没接收到可能是应用被卸载了,或者是网络延迟的作用,如果大家有更好的想法欢迎讨论讨论。

本文永久地址:http://www.huanghaiping.com/article/11.html
本文出自 黄海平博客 ,转载时请注明出处及相应链接。

发表我的评论
  

网友最新评论 (0)

暂无评论
返回顶部