Using PHP to send iOS Push Notifications via APNs

前端 未结 2 1825

I have implemented Push-Notifications into my Project and everything works fine so far. I\'ve tried sending Notifications through Pusher and this worked out just fine. But I

相关标签:
2条回答
  • 2020-12-15 14:25
    <?php
    
        function sendFCM($body, $title, $id, $StudentAdmissionId, $activitytype) {
            $url = "https://fcm.googleapis.com/fcm/send";
            $token = $id;
            $serverKey = 'AAAA8XYL2Y8:APA91bF1fsddfgffdssdsdfsdsdsda8zyWJTgs0OSeiRlk9WQqLwKn51VkMH_XSbpRuiCTU-Fdi2hoV8JY8ST7gCBQe4dlMFASDbr5Oci1bLmg9tyl5dlxyFDauWWCMItUNdFGWO_CWhpHwSIbvbqYwlCnoRd7ucB';
            $notification = array(
                'title' => $title,
                'text' => $body,
                'sound' => 'default',
                'badge' => 1,
                'category' => $activitytype,
                'content-available' => 1
            );
            $arrayToSend = array(
                'to' => $token,
                'notification' => $notification,
                'priority' => 'high'
            );
            $json = json_encode($arrayToSend);
            $headers = array();
            $headers[] = 'Content-Type: application/json';
            $headers[] = 'Authorization: key=' . $serverKey;
            $ch = curl_init();
    
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            //Send the request
            echo $response = curl_exec($ch);
            //Close request
            if ($response === FALSE) {
                die('FCM Send Error: ' . curl_error($ch));
            }
            curl_close($ch);
            mysql_query("INSERT INTO `tbl_notifications`(`n_activity_name`,`n_user_id`,`n_device_id`, `n_notification`) VALUES ('$activitytype','$StudentAdmissionId','$id','$response')");
            // #Echo Result Of FireBase Server
            return $response;
        }
    
    ?>
    
    • Use this for php & mysql backend for pusihing notification on android and ios on the same time

    • Here token of apns server is stored in db and pass to send fcm

    0 讨论(0)
  • 2020-12-15 14:32

    Try using this php script , make sure that the .pem certificate exits in same path as that php script when you run it , also get a correct device token

     <?php
            /* We are using the sandbox version of the APNS for development. For production
            environments, change this to ssl://gateway.push.apple.com:2195 */
            $apnsServer = 'ssl://gateway.sandbox.push.apple.com:2195';
            /* Make sure this is set to the password that you set for your private key
            when you exported it to the .pem file using openssl on your OS X */
            $privateKeyPassword = '1234';
            /* Put your own message here if you want to */
            $message = 'Welcome to iOS 7 Push Notifications';
            /* Pur your device token here */
            $deviceToken =
            '05924634A8EB6B84437A1E8CE02E6BE6683DEC83FB38680A7DFD6A04C6CC586E';
            /* Replace this with the name of the file that you have placed by your PHP
            script file, containing your private key and certificate that you generated
            earlier */
            $pushCertAndKeyPemFile = 'PushCertificateAndKey.pem';
            $stream = stream_context_create();
            stream_context_set_option($stream,
            'ssl',
            'passphrase',
            $privateKeyPassword);
            stream_context_set_option($stream,
            'ssl',
            'local_cert',
            $pushCertAndKeyPemFile);
    
            $connectionTimeout = 20;
            $connectionType = STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT;
            $connection = stream_socket_client($apnsServer,
            $errorNumber,
            $errorString,
            $connectionTimeout,
            $connectionType,
            $stream);
            if (!$connection){
            echo "Failed to connect to the APNS server. Error no = $errorNumber<br/>";
            exit;
            } else {
            echo "Successfully connected to the APNS. Processing...</br>";
            }
            $messageBody['aps'] = array('alert' => $message,
            'sound' => 'default',
            'badge' => 2,
            );
            $payload = json_encode($messageBody);
            $notification = chr(0) .
            pack('n', 32) .
            pack('H*', $deviceToken) .
            pack('n', strlen($payload)) .
            $payload;
            $wroteSuccessfully = fwrite($connection, $notification, strlen($notification));
            if (!$wroteSuccessfully){
            echo "Could not send the message<br/>";
            }
            else {
            echo "Successfully sent the message<br/>";
            }
            fclose($connection);
    
      ?>
    
    0 讨论(0)
提交回复
热议问题