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

WBOY
Freigeben: 2016-06-23 14:21:38
Original
946 Leute haben es durchsucht

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);
Nach dem Login kopieren


现在浏览器打开,直接显示连接不了苹果服务器...

也就是说socket 通讯没成功 ,不知道什么情况

浏览器访问的是这个:https://gateway.push.apple.com:2195/
程序里是ssl协议。
devicetoken和证书账号密码你都有了么?

token 跟帐号密码都有的,这个是ios端传给我的

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

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage