Настраиваем пуши

Настраиваем пуши

t.me/low_digital

Сразу к делу, для настройки push-уведомлений на сайте, нам понадобится:

1) Авторизоваться на https://firebase.google.com/ со своей gmail-почтой (нажать "Перейти в консоль")

2) Ткнуть "Create a project"

3) Придумать название для своего проекта

4) Нажать Continue

5) Связать аккаунт с Google Analytics, который используется на сайте, где мы собираемся реализовывать пуши. Если такого нет - создать.

6) Теперь переходим в дэшборд нашего нового Firebase-проекта. Открываем Project settings

Нас интересует Project number

Копируем его значение и переходим к нашему сайту. В корневой директории необходимо создать файл firebase-messaging-sw.js. В этом файле мы разместим следующий код:

// firebase-messaging-sw.js
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-app.js');
importScripts('https://www.gstatic.com/firebasejs/3.6.8/firebase-messaging.js');
firebase.initializeApp({
  messagingSenderId: '1488'
});
const messaging = firebase.messaging();

В параметре messagingSenderId мы должны указать project number, который получили в настройках Firebase.

Теперь, мы возвращаемся в личный кабинет Firebase и на той же странице, где мы брали Project number чуть ниже расположен HTML-код.

Его нам необходимо скопировать на наш сайт. С помощью этого кода мы подключаем библиотеку, которая откроет нам возможности работы с push-уведомлениями от Google Firebase.

Теперь, разместим на сайте следующий JS-код:

<script>
if ('Notification' in window) {
var messaging = firebase.messaging();
if (Notification.permission === 'granted') {
subscribe();
}
}

function subscribe() {
messaging.requestPermission()
.then(function () {
messaging.getToken().then(function (currentToken) {
//
if (currentToken) {
sendTokenToServer(currentToken);
} else {
//
setTokenSentToServer(false);
}
}).catch(function (err) {
//
setTokenSentToServer(false);
});
}).catch(function (err) {
//
});
}

function sendTokenToServer(currentToken) {
if (!isTokenSentToServer(currentToken)) {
//
var url = '/push.php';
jQuery.post(url, {
token: currentToken
});
setTokenSentToServer(currentToken);
} else {
//
}
}

function isTokenSentToServer(currentToken) {
return window.localStorage.getItem('sentFirebaseMessagingToken') == currentToken;
}

function setTokenSentToServer(currentToken) {
window.localStorage.setItem(
'sentFirebaseMessagingToken',
currentToken ? currentToken : ''
);
}

jQuery(document).ready(function() {
subscribe();
});
</script>

Теперь, каждый пользователь еще не подписанный на наши push-уведомления увидит вот такое предложение подписаться на них при попытке открыть сайт.

Далее, в корневой директории нашего сайта создаем файл push.php и копируем туда следующий код:

<?php
  $file = fopen('push.log', 'a');
  foreach ($_REQUEST as $key => $val){
    fwrite($file, $key . ' => ' . $val . "\n");
}
fclose($file);

Это позволит сохранить все идентификаторы пользователей, подписавшихся на наши уведомления в файл push.log

Теперь, подготовим скрипт, который будет рассылать push-уведомления, для этого создадим файл send-push.php и разместим в нём следующий код:

<?php
$CLIENT_TOKEN_ID = "CLIENT_TOKEN";
$request_body = [
'to' => $CLIENT_TOKEN_ID,
'notification' => [
'title' => 'ТЕСТ',
'body' => 'Слыш, купи сайт',
'icon' => 'https://cdn.icon-icons.com/icons2/2261/PNG/512/vibrator_sex_toy_icon_icon_140364.png',
'click_action' => 'http://prodviga.ru',
],
];
$url = 'https://fcm.googleapis.com/fcm/send';
$YOUR_API_KEY = 'SERVER_KEY';
$fields = json_encode($request_body);
$request_headers = [
'Content-Type: application/json',
'Authorization: key=' . $YOUR_API_KEY,
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>

В параметре $CLIENT_TOKEN_ID мы указываем идентификатор пользователя, который мы сохранили в файле push.log

В параметре $YOUR_API_KEY мы должны указать наш API-ключ для рассылки уведомлений. Он находится в личном кабинете Firebase в разделе "Project settings" - "Cloud Messaging"

Также, в массиве $request_body мы должны указать:

  • Заголовок сообщения
  • Текст сообщения
  • Иконку
  • CTA-ссылку, куда перейдет пользователь по клику на push-уведомление

Переходим по ссылке /send-push.php и наше push-уведомление успешно отправлено


Report Page