PHP 像苹果apns推送消息 手机收不到消息

问题遇到的现象和发生背景

代码是百度的粘贴别人的 证书也是按照网上设置的开发证书 就是手机收不到消息

问题相关代码,请勿粘贴截图

//苹果消息推送
public function push_apple(){

    //手机注册应用返回唯一的deviceToken
    //$deviceToken = '6ad7b13f b05e6137 a46a60ea 421e5016 4b701671 cc176f70 33bb9ef4 38a8aef9';  
    $deviceToken = 'b5b379882ff99416ee0ad51aed4791c38b75c3509a7be0e34d524ef19f116b41';
    //ck.pem通关密码
    $pass = '123456';     
    //消息内容  
    $message = 'A test message!';
    //badge我也不知是什么  
    $badge = 4;  
    //sound我也不知是什么(或许是推送消息到手机时的提示音)  
    $sound = 'Duck.wav';  
    //建设的通知有效载荷(即通知包含的一些信息)  
    $body = array();  
    //$body['id'] = "com.core.Aiiso";  
    $body['aps'] = array('alert' => $message);  
    if ($badge)  
      $body['aps']['badge'] = $badge;  
    if ($sound)  
      $body['aps']['sound'] = $sound;  
      
      $body['aps']['boundleid'] = "com.core.Aiiso"; 
    //把数组数据转换为json数据
    $payload = json_encode($body);  
    //echo strlen($payload),"\r\n";  
      
    //下边的写法就是死写法了,一般不需要修改,  
    //唯一要修改的就是: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', '../public/cert/apns-dev.pem');    
    stream_context_set_option($ctx, 'ssl', 'passphrase', $pass);  
    $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);  
    
    if (!$fp) {  
        print "Failed to connect $err $errstr\n";  
        return;  
    } else {  
       print "Connection OK\n<br/>";  
    }
    // send message  
    $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n",strlen($payload)) . $payload;
    print "Sending message :" . $payload . "\n";    
    fwrite($fp, $msg);  
    fclose($fp);  
    
}
运行结果及报错内容

Connection OK
Sending message :{"aps":{"alert":"A test message!","badge":4,"sound":"Duck.wav","boundleid":"com.core.Aiiso"}}
0.656133s
[ShowPageTrace]

我的解答思路和尝试过的方法

尝试证书重新申请 其他的代码 大多都一样

我想要达到的结果

手机能收到消息