Задача: Apache Cordova предоставляет удобный способ разработки кроссплатформенных мобильных приложений. В данной статье расскажу, как настроить отправку push уведомлений на платформах iOS и Android с использованием Firebase.
Установка плагина Firebase в Cordova проект
Перед началом работы удостоверьтесь, что у вас уже имеется готовое приложение на Cordova. Создать его можно по вот этому видеокурсу Создание приложения на Apache Cordova
Далее необходимо добавить два необходимых плагина:
cordova plugin add cordova-plugin-firebasex
cordova plugin add cordova-plugin-firebase-messaging
- cordova-plugin-firebasex: Этот плагин предоставляет интеграцию с Firebase и необходим для отправки push уведомлений.
- cordova-plugin-firebase-messaging: Плагин для работы с мессенджером Firebase.
Далее, добавьте следующие строки в конфигурационный файл проекта (config.xml):
<platform name="android">
<preference name="AndroidXEnabled" value="true" />
</platform>
<plugin name="cordova-plugin-firebasex">
<variable name="ANDROID_FIREBASE_CONFIG_FILEPATH" value="google-services.json" />
<variable name="IOS_FIREBASE_CONFIG_FILEPATH" value="GoogleService-Info.plist" />
</plugin>
Файлы google-services.json и GoogleService-Info.plist будут получены на следующих этапах.
Установка Cocoapods на macOS
Cocoapods - это менеджер зависимостей для проектов iOS, он необходим для интеграции Firebase в iOS проект. В штатном терминале macOS, поочереди, выполняем команды (в процессе запросит пароль вашего пользователя):
sudo arch -x86_64 gem install ffi
sudo gem install cocoapods
Далее перейдите в папку с платформой iOS и установите pod-ы:
cd /platforms/ios && arch -x86_64 pod install --verbose
Установка может занять некоторое время в зависимости от скорости вашего интернет-соединения.
Создаем проект приложения в Firebase
Откройте ваш браузер и перейдите на Firebase Console. Войдите в свою учетную запись Google, связанную с проектом.
На главной странице Firebase Console нажмите кнопку "Добавить проект" или выберите существующий проект, если таковой уже имеется.
После создания или выбора проекта перейдите в раздел "Настройки проекта", представленный в виде шестеренки в левой навигационной панели.
Добавление приложения для Android: В разделе "Настройки проекта" нажмите "Добавить приложение". Выберите платформу "Android" и следуйте дальнейшим инструкциям. В процессе регистрации приложения вам будут предложены заполнить необходимую информацию. По завершении регистрации, скачайте файл google-services.json и добавьте его в корневую папку вашего Cordova проекта.
Добавление приложения для iOS: После регистрации приложения для Android, вернитесь в раздел "Настройки проекта". Нажмите "Добавить приложение" еще раз и выберите платформу "iOS". Заполните необходимую информацию. По завершении регистрации, скачайте файл GoogleService-Info.plist и добавьте его в корневую папку проекта.
После завершения этого этапа, ваш проект в Firebase будет полностью настроен для отправки push уведомлений как на платформе Android, так и на iOS через Cordova приложение. Эти файлы (json и plist) обеспечивают связь между вашим приложением и Firebase, позволяя корректно обрабатывать уведомления.
Получение APNs Certificate для iOS
-
Откройте консоль Apple Developer:
Войдите в Apple Developer Console.
Удостоверьтесь, что у вас есть правильные разрешения для создания сертификатов. -
Перейдите в раздел "Certificates, Identifiers & Profiles":
В левом меню выберите "Keys" (Ключи) в разделе "Certificates, Identifiers & Profiles". -
Создайте новый сертификат для Push Notifications:
Нажмите "Create Key" (Создать ключ).
Заполните необходимые данные:
- Key Name (Название ключа): Укажите удобное для вас название для ключа.
- Key Type (Тип ключа): Выберите "APNs" (Apple Push Notifications service).
- Key ID (Идентификатор ключа): Это поле заполняется автоматически, но вы можете ввести свой уникальный идентификатор, если хотите.
-
Скачайте файл с расширением .p8:
После создания ключа, сразу скачается файл с расширением .p8. Этот файл - ваш APNs authentication key. -
Сохраните Key ID и Team ID:
Вам также понадобятся Key ID и Team ID. Key ID можно найти на странице ключа, а Team ID - в вашем аккаунте разработчика под "Membership". -
Загрузите APNs Auth Key в Firebase Console:
В консоли проекта Firebase, перейдите к разделу "Cloud Messaging" > "iOS app configuration". Нажмите "Upload your APNs Auth Key" и перетащите скачанный .p8 файл в указанную область. В поле "Key ID" укажите Key ID, а в поле "Team ID" укажите Team ID.
Теперь у вас есть успешно настроенный APNs authentication key, который вы можете использовать вместе с Firebase для отправки уведомлений на iOS устройства. Не забудьте сохранить ваш ключ в надежном месте, так как его можно скачать только один раз.
Важно помнить, что при открытии проекта iOS для сборки и тестирования, используйте файл /ВАШ_ПРОЕКТ/platforms/ios/НАЗВАНИЕ_ПРИЛОЖЕНИЯ.xcworkspace, а не .xcodeproj. Это обеспечит корректную работу с плагинами и зависимостями.
Отправка push уведомления из Firebase
Для начала, запросите разрешение на отправку push уведомлений в приложении:
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
window.FirebasePlugin.grantPermission(function () {
// Разрешение получено, можно ничего не делать больше
}, function (error) {
// alert(error); Ошибка получения разрешения
});
}
При первом запуске приложения на устройстве пользователю будет предложено разрешить отправку уведомлений.
- Затем, в Firebase Console, в левой навигационной панели выберите раздел "Engage -> Messaging
- Нажмите на кнопку "New Campaign" (Новая кампания).
- В появившемся окне выберите тип уведомления "Notification" (Уведомление).
Заполните необходимые поля: Название кампании, укажите понятное и описательное название для кампании. Напишите текст уведомления.
Вы можете выбрать, на какие платформы (iOS, Android) и устройства отправить уведомление.

Просмотрите все параметры кампании и, если все верно, нажмите "Publish" (Опубликовать). Уведомление будет отправлено на выбранные платформы и устройства.

Получение токена устройства:
Код |
---|
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']; |