首页 >后端开发 >php教程 >php 实现“多个”终端设备的“推送”功能

php 实现“多个”终端设备的“推送”功能

WBOY
WBOY原创
2016-06-23 14:21:38967浏览

PHP 终端 推送

求解如何用 php代码实现 ios 等设备的推送信息功能呢?

可能有很多终端设备都需要接受到推送信息,执行一次脚本实现多次推送

路过的给点有用的建议,谢谢

回复讨论(解决方案)

说的具体点吧,送ipad还是现金?

什么触发?推送什么内容?

说的具体点吧,送ipad还是现金?

什么触发?推送什么内容?

自己在网上看了一下这个
http://www.iteye.com/topic/1130630

就是类似苹果给手机发送的推送,内容随便

既然你都看到相关文章,为何还在这边问呢?
这里也是只能给你思路而已,具体代码要自己写的

原理无非就是建立一个连接(socket类似),从服务器向设备发送字节,设备端接收后怎么处理都可以??直接显示、弹出窗口、通知、闪动提醒等等

做法有两种
1.服务器作为服务端,各种设备作为客户端,建立长连接,服务器依据触发条件发送,做法有点像聊天室
2.反向思维,各种设备作为 服务端(没写错,是服务端),向服务器登录并记下其监听ip/port(登录是不一定就发送,目的只是提交在线状态),服务器依据触发条件 另外运行 客户端程序向所有登录的设备各自提交连接请求,连接成功就发送

既然你都看到相关文章,为何还在这边问呢?
这里也是只能给你思路而已,具体代码要自己写的

原理无非就是建立一个连接(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里。

$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端传给我的

这个推送功能你实现了吗?一条内容同时推送至多台设备!
请问你是怎么做到的?

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn