Настройка работы с push уведомлениями через Firebase в мобильном приложении Apache Cordova

RSS
Настройка работы с push уведомлениями через Firebase в мобильном приложении Apache Cordova
 
Настройка работы с push уведомлениями через Firebase в мобильном приложении Apache Cordova

Задача: Apache Cordova предоставляет удобный способ разработки кроссплатформенных мобильных приложений. В данной статье расскажу, как настроить отправку push уведомлений на платформах iOS и Android с использованием Firebase.
 
Для отправки 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'];
Изменено: Михаил Базаров - 22.10.2023 13:51:23
 
На апрель 2024 наблюдается проблема при сборке приложений на IOS
Приожение может быть успешно собрано и запуститься в эмуляторе, но вылетает сос боем на реальных устройствах.

Проблема в устаревшем плагине faribasex - сообщество уже решает, скоро будет обновление платформы.

Временный выход, вручную указать версии cocoapods в файле плагина, заменить все версии 10.17.0 на 10.24.0 и вручную пересобрать ios платформу
Код
<pod name="FirebaseCore" spec="10.24.0"/>
            <pod name="FirebaseAuth" spec="10.24.0"/>
            <pod name="FirebaseAnalytics" spec="10.24.0"/>
            <!--<pod name="FirebaseAnalyticsOnDeviceConversion" spec="10.17.0"/>-->
            <pod name="FirebaseMessaging" spec="10.24.0"/>
            <pod name="FirebasePerformance" spec="10.24.0"/>
            <pod name="FirebaseRemoteConfig" spec="10.24.0"/>
            <pod name="FirebaseInAppMessaging" spec="10.24.0-beta"/>
            <pod name="FirebaseFirestore" spec="10.24.0"/>
            <pod name="FirebaseCrashlytics" spec="10.24.0"/>
            <pod name="FirebaseFunctions" spec="10.24.0"/>
            <pod name="FirebaseInstallations" spec="10.24.0"/>
            <pod name="GoogleSignIn" spec="6.2.4"/>
            <pod name="GoogleTagManager" spec="7.4.3"/>
Изменено: Михаил Базаров - 18.04.2024 17:28:28
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Ютубе