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

mahuatengBC 2013-06-13 11:14:14
求解如何用 php代码实现 ios 等设备的推送信息功能呢?

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

路过的给点有用的建议,谢谢
...全文
933 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangxuejin 2014-04-09
  • 打赏
  • 举报
回复
想法很棒,但是推送端怎么知道我的内网地址呢???
小鱼n_n 2013-09-12
  • 打赏
  • 举报
回复
这个推送功能你实现了吗?一条内容同时推送至多台设备! 请问你是怎么做到的?
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
引用 2 楼 snmr_com 的回复:
说的具体点吧,送ipad还是现金? 什么触发?推送什么内容?
自己在网上看了一下这个 http://www.iteye.com/topic/1130630 就是类似苹果给手机发送的推送,内容随便
ImN1 2013-06-13
  • 打赏
  • 举报
回复
说的具体点吧,送ipad还是现金? 什么触发?推送什么内容?
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
token 跟帐号密码都有的,这个是ios端传给我的
LuciferStar 2013-06-13
  • 打赏
  • 举报
回复
浏览器访问的是这个:https://gateway.push.apple.com:2195/ 程序里是ssl协议。 devicetoken和证书账号密码你都有了么?
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
也就是说socket 通讯没成功 ,不知道什么情况
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
引用 7 楼 LuciferStar 的回复:
$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);
现在浏览器打开,直接显示连接不了苹果服务器...
LuciferStar 2013-06-13
  • 打赏
  • 举报
回复
$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里。
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
不过还是多谢你的指导了,虽然对我没什么用
mahuatengBC 2013-06-13
  • 打赏
  • 举报
回复
引用 4 楼 snmr_com 的回复:
既然你都看到相关文章,为何还在这边问呢? 这里也是只能给你思路而已,具体代码要自己写的 原理无非就是建立一个连接(socket类似),从服务器向设备发送字节,设备端接收后怎么处理都可以——直接显示、弹出窗口、通知、闪动提醒等等 做法有两种 1.服务器作为服务端,各种设备作为客户端,建立长连接,服务器依据触发条件发送,做法有点像聊天室 2.反向思维,各种设备作为服务端(没写错,是服务端),向服务器登录并记下其监听ip/port(登录是不一定就发送,目的只是提交在线状态),服务器依据触发条件另外运行客户端程序向所有登录的设备各自提交连接请求,连接成功就发送
肯定是不能实现,才问的!
ImN1 2013-06-13
  • 打赏
  • 举报
回复
既然你都看到相关文章,为何还在这边问呢? 这里也是只能给你思路而已,具体代码要自己写的 原理无非就是建立一个连接(socket类似),从服务器向设备发送字节,设备端接收后怎么处理都可以——直接显示、弹出窗口、通知、闪动提醒等等 做法有两种 1.服务器作为服务端,各种设备作为客户端,建立长连接,服务器依据触发条件发送,做法有点像聊天室 2.反向思维,各种设备作为服务端(没写错,是服务端),向服务器登录并记下其监听ip/port(登录是不一定就发送,目的只是提交在线状态),服务器依据触发条件另外运行客户端程序向所有登录的设备各自提交连接请求,连接成功就发送

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧