php做ios推送的服务器,后台运行的时候会推送两条信息?有代码

问题描述

php做ios推送的服务器,后台运行的时候会推送两条信息?有代码

为什么php做ios推送的服务器的时候,后台运行的时候会推送两条信息?但是手机关掉屏幕推送的时候就正常了~ 就只有后台运行的时候是两条?? 怎么改呢?
下面是代码

 /**
手机推送信息类
@author:wtt
*/
class Push{
    private $deviceToken;
    private $message;
    function __construct($deviceToken,$message){
        $this->deviceToken = $deviceToken;
        $this->message = $message; 

    }
    public function push(){
        //ck.pem通关密码
        $pass = '123456';
        //消息内容
        //badge我也不知是什么
        $badge = 1;
        //sound我也不知是什么(或许是推送消息到手机时的提示音)
        $sound = 'Duck.wav';
        //建设的通知有效载荷(即通知包含的一些信息)
        $body = array();
        $body['aps'] = array('alert' => $this->message);
        if ($badge)
          $body['aps']['badge'] = $badge;
        if ($sound)
          $body['aps']['sound'] = $sound;
        //把数组数据转换为json数据
        $payload = json_encode($body);
        //echo strlen($payload),"rn";
        //下边的写法就是死写法了,一般不需要修改,
        //唯一要修改的就是:ssl://gateway.sandbox.push.apple.com:2195这个是沙盒测试地址,ssl://gateway.push.apple.com:2195正式发布地址
        $ctx = stream_context_create();
        stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
        stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);
        $fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
        if (!$fp) {
            print "Failed to connect {$err} {$errstr}n";
            return;
        }
        else {
          // print "Connection OKn<br/>";
        }
        // send message
        $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $this->deviceToken)) . pack("n",strlen($payload)) . $payload;
        //print "Sending message :" . $payload . "n";
        fwrite($fp, $msg);
        fclose($fp);
    }
}
时间: 2024-08-31 09:01:20

php做ios推送的服务器,后台运行的时候会推送两条信息?有代码的相关文章

iOS 推送大退的时候收不到推送消息

问题描述 大退的时候收不到推送消息, 只有当APP在后台运行时才能收到推送消息,求解,谢谢 解决方案 http://docs.easemob.com/im/300iosclientintegration/75apns   需要集成离线推送.解决方案二:在后台不是离线推送.还有大退不是指kill掉应用吗?

c#-C#不如JAVA吗?为什么做ios MDM 的时候推送这么小的问题无法解决

问题描述 C#不如JAVA吗?为什么做ios MDM 的时候推送这么小的问题无法解决 http://stackoverflow.com/search?q=C%23+MDM 好多人都在问,推送后,代码没有任何报错,没有任何异常,设备就是没反应,碰到这种情况该往哪方向突破,系统日志什么的看了根本没有异常,当然推送证书有可能有问题,是按照网上提供的方式制作的这个不能保证,其他的完全是按照标准来完成的,checkin也可以,就差推送了,折腾1周了,各种资料都翻了,全是JAVA的,非要转JAVA做吗? 解

ios两个用户聊天,程序后台运行的事后,为什么不能收到推送?

问题描述 ios两个用户聊天,程序后台运行的后,为什么不能收到推送?证书上传了,证书注册的代码也都写了,运行程序的时候也提醒是否设置推送点了确定了,就是收不到消息!什么情况? 解决方案 推送证书是APNS,apns是在应用被杀掉后才会走.在后台的时候需要自己写本地通知.参考demo里面mainvc  didreceivemssage里面的处理.

iOS 推送消息只有后台关闭了才会收到推送框

问题描述 当我把软件进入后台的时候, 发送了一条消息,打印台有显示收到新消息,但是没有推送框提示.软件在前台的时候也是一样,发送消息只看到打印,没有收到弹框, 但是我把软件关闭了之后再发送一条消息,就可以收到推送框了. 我想要的效果是 1.软件在前台的时候,能弹出消息提示框.(可以理解成截取收到消息的方法,自定义收到消息后显示的效果)2.软件在后台的时候能收到推送框框 解决方案 1.软件在前台的时候,能弹出消息提示框.----这个不能走推送的,你可以用alertview实现的,2.软件在后台的时

微信小程序 消息推送php服务器验证实例详解

微信小程序 消息推送php服务器验证实例详解 微信文档(靠下有个"接入指引"):https://mp.weixin.qq.com/debug/wxadoc/dev/api/custommsg/callback_help.html 设置页面("设置">>"开发设置"): https://mp.weixin.qq.com/wxopen/initprofile?action=home&lang=zh_CN 1.设置服务器域名 比如:

服务器-开发一款iOS视频类的App后台需要什么?

问题描述 开发一款iOS视频类的App后台需要什么? 想开发一款iOS视频类的app,就是想自己走一下整体流程.但我只是大致上了解前端的东西,后台的服务器用什么语言写还有数据库用什么写都不清楚,说白了就是不清楚json怎么来的根本就不知道?谁能给我指点下吧,都苦恼好几天了!谢谢!还有,我要都要用那个语言写呢? 解决方案 php+mysql?这个组合应该比较广泛吧,我也是新手 解决方案二: 用哪个语言来写不是关键,关键是无论什么编程语言,都需要一个学习的过程,没有一种语言简单到对于一窍不通的人拿来

服务器-java怎么做IOS的下载。。。。。

问题描述 java怎么做IOS的下载..... 做java web的,用Struts2就可以很好的写一个web项目支持的文件下载,主要代码步骤是:struts.xml中配置下输入流,文件名,文件后缀的HttpContentType等,action有一个getInputStream,执行下execute,在浏览器中访问到就能弹出一个下载的提醒页面,可以完成下载.但目前这个却不能满足IOS端下载的需求,IOS的下载请求是https的,服务器上好像还要通过证书验证(已有pfx格式的证书),具体要怎么做

ios demo上的离线推送,我在测试环境下离线推送能收的到消息,但在release就不想

问题描述 解决方案 按照视频重新制作上传一下证书解决方案二:确认app是kill掉的,调用rest获取一下你登录账号的详情,看有没有绑定deviceToken和证书字段,检查是否和你后台上传的对应.如果没有问题,有可能是证书制作的问题,可以参考这个视频:http://v.youku.com/v_show/id_X ... .html解决方案三:前面几个没有问题,因为我配置证书时开发,生产是同时配,现在问题是我在Debug下,程序退出后能收到通知,但在release下就有问题,不明白哪里错了解决方

link环境下制作一款《网盘软件》,它的服务器后台是不是必须做?

问题描述 link环境下制作一款<网盘软件>,它的服务器后台是不是必须做? link环境下制作一款<网盘软件>,它的服务器后台是不是必须做? 解决方案 必须做?如果你需要一个管理员的维护控制的界面,你就需要开发后端的程序.一个完备的程序都是需要的.