How to send iOS Push Notifications using TLS and PHP?

前端 未结 3 738
长情又很酷
长情又很酷 2021-02-04 18:25

My app is still in development and I used this tutorial to send iOS Push Notifications using PHP and SSL.

http://www.raywenderlich.com/32960/apple-push-notification-serv

相关标签:
3条回答
  • 2021-02-04 19:10
    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
    stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');
    $fp = stream_socket_client('tls://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
    

    if you work in a localhost environment don't forget download the certification file entrust_2048_ca.cer

    0 讨论(0)
  • 2021-02-04 19:16

    Here are a few tips that should can help you figure out:

    1. Go to entrust.net/downloads/root_request.cfm and download entrust_2048_ca.cer

    2. Add following code: stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');

    3. Make sure if path is right: '../folder/file/ck.pem' ?

    4. Switch and try both the sandbox and live ssl links.

    5. Switch dev and production pem and try both.

    0 讨论(0)
  • 2021-02-04 19:22
    <?php
    $message = 'aa_' . rand(10000,99999);
    
    $deviceToken = array(
        'xxxxxx'
    );
    
    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'passphrase', '111111');
    stream_context_set_option($ctx, "ssl", "local_cert", './apns.pem');
    
    $fp = NULL;
    $errno = NULL;
    $errstr = NULL;
    
    $fp = stream_socket_client("tls://gateway.sandbox.push.apple.com:2195", $errno, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
    
    if($fp === FALSE){
        exit('error message');
    }
    
    $content = array("aps" => array("alert" => $message, "badge" => 4, "sound" => 'default', "code" => 200));
    $data = json_encode($content);
    
    foreach ($deviceToken as $token) {
        $msg = chr(0) . pack("n", 32) . pack("H*", $token) . pack("n", strlen($data)) . $data;
        fwrite($fp, $msg);
        fflush($fp);
    }
    
    fclose($fp);
    
    0 讨论(0)
提交回复
热议问题