Push Notification Error: “Unable to set local cert chain file”

后端 未结 3 1689
萌比男神i
萌比男神i 2021-01-04 09:23

I wrote a test php page that just sends out a generic push notification and it works intermittently. Sometimes it delivers the message and other times I get this error:

3条回答
  •  萌比男神i
    2021-01-04 09:57

    Me too got more struggle to do the same. Eventually I found solution to send push notification through PHP global url. Try the below steps. Before that I hope you all know to generate the 3 certificates thats PushChat.certSigningRequest, pushkey.p12 & aps_development.cer (csr,p12,cer)

    Open your Terminal and step by step run the below commands:

    # Make sure terminal refers your correct certificate path.
    $ cd ~/Desktop/
    
    # Ask system administrator to open if its not connected 
    $ telnet gateway.sandbox.push.apple.com 2195
    
    Trying 17.110.227.35...
    Connected to gateway.sandbox.push-apple.com.akadns.net.
    
    Escape character is '^]'.
    
    # Convert .cer to .pem
    $ openssl x509 -in aps_development.cer -inform der -out PushCert.pem
    
    # Convert .p12 to .pem. Enter your pass pharse which is the same pwd that you have given while creating the .p12 certificate. PEM pass phrase also same as .p12 cert.  
    $ openssl pkcs12 -nocerts -out PushKey1.pem -in pushkey.p12
    
    Enter Import Password:
    
    MAC verified OK
    
    Enter PEM pass phrase:
    
    Verifying - Enter PEM pass phrase:
    
    # To remove passpharse for the key to access globally. This only solved my stream_socket_client() & certificate capath warnings.
    $ openssl rsa -in PushKey1.pem -out PushKey1_Rmv.pem
    
    Enter pass phrase for PushChatKey1.pem:
    
    writing RSA key
    
    # To join the two .pem file into one file:
    $ cat PushCert.pem PushKey1_Rmv.pem > ApnsDev.pem
    

    Then Finally move the SimplePush.php to the ApnsDev.pem file location. Both files will be in same folder. and change Device Token, Pass Phrase, Certificate Name(ApnsDev.pem), Message… In simplepush.php Download the file using the below URL. http://d1xzuxjlafny7l.cloudfront.net/downloads/SimplePush.zip Then execute the file in terminal or your domain server

    $ php simplepush.php
    

    or

    www.Domainname.com/push/simplepush.php  // Now, url shows 'Connected to APNS Message successfully delivered'.
    

    Thats it, the push notification will fly and reach the specific IOS device.

    If you want to send 'Badge' then change the payload code in simplepush.php like below,

    // Construct the notification payload body:
    
    $badge = 1;
    
    $sound = 'default';
    
    $body = array();
    
    $body['aps'] = array('alert' => $message);
    
    if ($badge)
    
        $body['aps']['badge'] = $badge;
    
    if ($sound)
    
        $body['aps']['sound'] = $sound;
    
    
    // End of Configurable 
    
    // Encode the payload as JSON:
    
    $payload = json_encode($body);
    

    Now run the php file again and the app icon appears with badge number in red circle.

提交回复
热议问题