Отправка пушей Firebase через форму PHP

141
14 апреля 2019, 13:20

Есть работающий код, но хотелось бы прикрутить форму заполнения для отправки. Пробовал, пуши якобы уходят но в приложение не приходят. Прилагаю код, хотелось чтобы заполнялись поля: "type" "mainId" "title" 'message'

Если есть кто поставит меня на путь истинный хотя бы примером, буду очень благодарен!

<meta charset="utf-8">
<?php
echo "<div style='margin:auto;width:60%;text-align:center;'>";
echo "<hr>";
echo "<h2>Отправка Push уведомления на приложение B2C</h2>";
echo "<hr>";
if (isset($_POST["pushSubmit"])) {
goPushforBtoC();
echo "<h2>PUSH ОТПРАВЛЕН</h2>";
} else {
echo "<form method='post' action='' onsubmit='return confirm(\"Вы точно 
хотите отправить Push уведомление?\");'>";
echo "<input type='submit' name='pushSubmit' value='Отправить Push'>";
echo "</form>";
}
echo "</div>";

function sendNotificationsAndroid($fields) {
$headersAndroid =
    array(
        'Authorization: key=',
        'Content-Type: application/json'
    );
$chAndroid = curl_init();
curl_setopt($chAndroid, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($chAndroid, CURLOPT_POST, true);
curl_setopt($chAndroid, CURLOPT_HTTPHEADER, $headersAndroid);
curl_setopt($chAndroid, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chAndroid, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($chAndroid, CURLOPT_POSTFIELDS, json_encode($fields));
curl_exec($chAndroid);
curl_close($chAndroid);
}

function sendNotificationsIOS($fields) {
$headersIos =
    array(
        'Authorization: key=',
        'Content-Type: application/json'
    );
$chIos = curl_init();
curl_setopt($chIos, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($chIos, CURLOPT_POST, true);
curl_setopt($chIos, CURLOPT_HTTPHEADER, $headersIos);
curl_setopt($chIos, CURLOPT_RETURNTRANSFER, true);
curl_setopt($chIos, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($chIos, CURLOPT_POSTFIELDS, json_encode($fields));
curl_exec($chIos);
curl_close($chIos);
}

function goPushforBtoC() {
 $fieldsAndroid = array(
  'fr' => array(
          "to" => "/topics/testEN",
          "data" => array(
              "title" => 'Trololo',
              'message' => '  Apprendre encore plus!'
          ),
      )
  );
 foreach ($fieldsAndroid as $value) {
  sendNotificationsAndroid($value);
 }

  $fieldsIos = array(
      'en' => array(
          "to" => "/topics/testEN",
          "data" => array(
              "type" => "main"
          ),
          "notification" => array(
              "title" => 'Trololo',
              "body" => '  Learn more!',
              "badge" => 1
          )
      ),
  );
  foreach ($fieldsIos as $value) {
  sendNotificationsIOS($value);
  }
    }
      ?>
Answer 1

Вот пример рабочей логики отправки пуш уведомлений։

<?php
$message = array(
    'title' => 'TITLE',
    'body' => 'MESSAGE',
    'sound' => 'default',
    'badge' => 1
);

$tokens = array( 'APP_TOKEN_HERE' );

$message_status = send_notification( $tokens, $message );


public function send_notification( $tokens, $notification ) {
    header( 'Content-Type: application/json; charset=utf-8' );
    $arrayToSend = array( 'registration_ids' => $tokens, 'notification' => $notification, 'data' => $notification, 'priority' => 'high' );
    $json = json_encode( $arrayToSend );

    $headers = array();
    $headers[] = 'Content-Type: application/json';
    $headers[] = 'Authorization: key=YOUR_KEY';


    $ch = curl_init( "https://fcm.googleapis.com/fcm/send" );
    curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $json );
    curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
    $response = curl_exec( $ch );
    curl_close( $ch );
    $response = json_decode( $response, true );
    return $response;

}
?>
READ ALSO
Поведение к зависимости от типа?

Поведение к зависимости от типа?

У меня имеется модель занятия, соответствующая миграция и запись в бдУ занятия имеется тип (отношение), определяется при создании модели...

166
Корректный вызов private функции

Корректный вызов private функции

Почему следующая программа выводит B, ведь функция bar вызывает private функцию?

166
Как вынести функции в класс

Как вынести функции в класс

Помогите вынести функции rangeCheck() и errorMessege() в отдельный класс MyError что бы не нарушить функционал, ибо я уже всё что мне известно перепробовал:(

179