php 实现“多个”终端设备的“推送”功能 PHP终端推送 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 说的具体点吧,送ipad还是现金?什么触发?推送什么内容? 自己在网上看了一下这个http://www.iteye.com/topic/1130630就是类似苹果给手机发送的推送,内容随便 既然你都看到相关文章,为何还在这边问呢?这里也是只能给你思路而已,具体代码要自己写的原理无非就是建立一个连接(socket类似),从服务器向设备发送字节,设备端接收后怎么处理都可以——直接显示、弹出窗口、通知、闪动提醒等等做法有两种1.服务器作为服务端,各种设备作为客户端,建立长连接,服务器依据触发条件发送,做法有点像聊天室2.反向思维,各种设备作为服务端(没写错,是服务端),向服务器登录并记下其监听ip/port(登录是不一定就发送,目的只是提交在线状态),服务器依据触发条件另外运行客户端程序向所有登录的设备各自提交连接请求,连接成功就发送 $fp = stream_socket_client(“ssl://gateway.sandbox.push.apple.com:2195″, $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx); 关键是这个。app要向apple的服务器注册接收通知,注册后,PHP向apple的服务器发送消息后,apple的服务器完成推送。而不是PHP直接推送到app里。 问题就是这个,$deviceToken= '5a25d318035c3be9c2ca00572b81463c73c433aea6c738540d46db6a64f70125';//$deviceToken=$_REQUEST["token"];//推送方式,包含内容和声音$body = array("aps" => array("alert" => '推送测试',"badge" => 11,"sound"=>'default'));//创建数据流上下文对象$ctx = stream_context_create();//设置pem格式文件//$pem = dirname(__FILE__) . '/' . 'server_certificates_bundle_sandbox.pem';$pem = "server_certificates_bundle_sandbox.pem"; //echo $pem;//设置数据流上下文的本地认证证书stream_context_set_option($ctx,"ssl","local_cert", $pem); $pass = "";//设置数据流上下文的密码stream_context_set_option($ctx, 'ssl', 'passphrase', $pass); //产品发布APNS服务器,gateway.push.apple.com//测试APNS服务器,gateway.sandbox.push.apple.com//socket通讯$fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) {echo "连接苹果服务器失败.";return;}print "连接苹果服务器OK\n";//载荷信息,JSON编码$payload = json_encode($body); //构建发送的二进制信息$msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', " ", $deviceToken)). pack("n",strlen($payload)) . $payload; echo "发送消息:" . $payload ."\n";fwrite($fp, $msg);fclose($fp);现在浏览器打开,直接显示连接不了苹果服务器... 也就是说socket 通讯没成功 ,不知道什么情况 浏览器访问的是这个:https://gateway.push.apple.com:2195/程序里是ssl协议。devicetoken和证书账号密码你都有了么? token 跟帐号密码都有的,这个是ios端传给我的 小女问个问题:关于.idx文件 php读取文本文件 好心人教我学什么程序容易上手又有前途啊?新人。。。。傻 哪位高手能帮我解答一下 谢谢 ldap_search的问题 用PHP强何得到POST后的页面内容,不够分再加 欢迎浏览我的网站,zhuzhugrit.tyvhost.com,加入分类主题收集者的行列,请多提宝贵意见。 数据库变化,触发网页报警提示,不能用网页刷新检测数据库,怎么实现,请教高手? MYSQL的问题? jquery ajax 返回的数据异常,急,在线等! 函数代码求解 同一个页面多次调用同一个php文件出错
自己在网上看了一下这个
http://www.iteye.com/topic/1130630就是类似苹果给手机发送的推送,内容随便
这里也是只能给你思路而已,具体代码要自己写的原理无非就是建立一个连接(socket类似),从服务器向设备发送字节,设备端接收后怎么处理都可以——直接显示、弹出窗口、通知、闪动提醒等等做法有两种
1.服务器作为服务端,各种设备作为客户端,建立长连接,服务器依据触发条件发送,做法有点像聊天室
2.反向思维,各种设备作为服务端(没写错,是服务端),向服务器登录并记下其监听ip/port(登录是不一定就发送,目的只是提交在线状态),服务器依据触发条件另外运行客户端程序向所有登录的设备各自提交连接请求,连接成功就发送
STREAM_CLIENT_CONNECT, $ctx);
关键是这个。app要向apple的服务器注册接收通知,注册后,PHP向apple的服务器发送消息后,apple的服务器完成推送。
而不是PHP直接推送到app里。
问题就是这个,$deviceToken= '5a25d318035c3be9c2ca00572b81463c73c433aea6c738540d46db6a64f70125';
//$deviceToken=$_REQUEST["token"];
//推送方式,包含内容和声音$body = array("aps" => array("alert" => '推送测试',"badge" => 11,"sound"=>'default'));//创建数据流上下文对象$ctx = stream_context_create();//设置pem格式文件
//$pem = dirname(__FILE__) . '/' . 'server_certificates_bundle_sandbox.pem';
$pem = "server_certificates_bundle_sandbox.pem";
//echo $pem;
//设置数据流上下文的本地认证证书stream_context_set_option($ctx,"ssl","local_cert", $pem);
$pass = "";
//设置数据流上下文的密码
stream_context_set_option($ctx, 'ssl', 'passphrase', $pass); //产品发布APNS服务器,gateway.push.apple.com//测试APNS服务器,gateway.sandbox.push.apple.com//socket通讯
$fp = stream_socket_client("ssl://gateway.push.apple.com:2195", $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) {echo "连接苹果服务器失败.";return;}print "连接苹果服务器OK\n";//载荷信息,JSON编码$payload = json_encode($body); //构建发送的二进制信息$msg = chr(0) . pack("n",32) . pack("H*", str_replace(' ', " ", $deviceToken)). pack("n",strlen($payload)) . $payload; echo "发送消息:" . $payload ."\n";fwrite($fp, $msg);fclose($fp);
现在浏览器打开,直接显示连接不了苹果服务器...
程序里是ssl协议。
devicetoken和证书账号密码你都有了么?