Для отправки Push-уведомления конкретному пользователю с помощью Firebase и Apache Cordova.
Получение токена устройства:
Код |
---|
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
window.FirebasePlugin.getToken(function (token) {
// Сохраняем этот токен в базе данных сайта
// alert(token);
}, function (error) {
alert(error);
});
} |
Обновление токена устройства (при смене)
Код |
---|
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
window.FirebasePlugin.onTokenRefresh(function (token) {
// Обновляем токен в базе данных сайта
// alert(token);
}, function (error) {
// alert(error);
});
} |
Отправка Push-уведомления через PHP (или JS)
PHP (рекомендуется для оптимальной работы):
Код |
---|
<?php
$serverKey = 'YOUR_FCM_SERVER_KEY';
$deviceToken = 'INSTANCE_ID_OF_TARGET_DEVICE';
$message = array(
'to' => $deviceToken,
'notification' => array(
'title' => 'Заголовок уведомления',
'body' => 'Текст уведомления'
)
);
$headers = array(
'Authorization: key=' . $serverKey,
'Content-Type: application/json'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($message));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
|
Замените YOUR_FCM_SERVER_KEY на ваш серверный ключ FCM, который можно найти в консоли Firebase в настройках приложения. INSTANCE_ID_OF_TARGET_DEVICE на Instance ID устройства, на которое вы хотите отправить уведомление.
Этот код использует cURL для отправки POST-запроса к API FCM. Убедитесь, что на вашем сервере включена поддержка cURL.
Если нужно отправить сообщение на все устройства пользователя, вы можете использовать массив с несколькими Instance ID устройств.
Код |
---|
// Здесь перечислены токены всех устройств пользователя
$deviceToken = ['INSTANCE_ID_OF_DEVICE_1', 'INSTANCE_ID_OF_DEVICE_2', 'INSTANCE_ID_OF_DEVICE_3']; |