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端传给我的
这个推送功能你实现了吗?一条内容同时推送至多台设备!
请问你是怎么做到的?