Интеграция с Push-уведомлениями для мобильных приложений: пошаговое руководство
В этой статье мы расскажем, как правильно настроить и интегрировать Push-уведомления со стороны серверной части мобильного приложения.
Выбор SDK
Для интеграции Push-уведомлений существует множество бесплатных решений, которые позволяют отправлять уведомления на разные платформы. Самыми популярными являются Firebase и OneSignal. Настройки этих сервисов схожи, поэтому можно выбрать любой. Мы часто рекомендуем OneSignal, так как он предоставляет удобный интерфейс для ручной отправки уведомлений и аналитики, а также позволяет группировать пользователей для таргетированной рассылки. Кроме того, его интеграция и настройка более интуитивно понятны.
Принцип работы Push-уведомлений
Независимо от выбранного сервиса, принцип работы Push-уведомлений похож:
1. Инициализация: после установки и запуска приложения происходит инициализация системы уведомлений.
2. Получение Push-токена: после инициализации сервис возвращает уникальный ключ, известный как Push-токен. Этот токен привязан к устройству и приложению, что позволяет идентифицировать его в рамках комбинации «приложение-устройство».
3. Использование Push-токена: Push-токен — это строковый ключ, который используется для отправки уведомлений на конкретное устройство через API выбранного сервиса. С помощью этого токена можно отправлять как адресные уведомления (только одному пользователю), так и массовые.
Настройка на сервере: связывание Push-токенов с пользователями
Часто требуется привязать Push-токен (или несколько токенов) к конкретному пользователю, чтобы отправлять уведомления согласно бизнес-логике. Для этого мы рекомендуем создать серверный метод, например, push/set, который принимает Push-токен и сохраняет его для текущего пользователя.
Пример логики:
1. Клиентское приложение отправляет Push-токен на сервер после авторизации.
2. Сервер связывает полученный Push-токен с авторизованным пользователем (по текущей сессии).
3. Информация о пользователе и его токенах сохраняется в отдельной таблице базы данных.
Когда необходимо отправить уведомление, сервер находит все токены, связанные с пользователем, и отправляет уведомление на все устройства.
Пример отправки Push-уведомлений на PHP (OneSignal и Firebase)
Для отправки уведомлений можно использовать API.
Вот пример на PHP для OneSignal:
function sendPushNotification($title, $message, $userToken) {
$content = array(
"en" => $message
);
$fields = array(
'app_id' => "YOUR_ONESIGNAL_APP_ID",
'include_player_ids' => array($userToken),
'headings' => array("en" => $title),
'contents' => $content
);
$fields = json_encode($fields);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8',
'Authorization: Basic YOUR_REST_API_KEY'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
Замените YOUR_ONESIGNAL_APP_ID и YOUR_REST_API_KEY на свои данные из панели управления OneSignal.
Вот пример на PHP для FireBase:
function sendFirebaseNotification($title, $message, $userToken) {
// Данные для уведомления
$notification = [
'title' => $title,
'body' => $message,
'sound' => 'default' // добавляет звук уведомлению
];
// Данные для отправки
$fields = [
'to' => $userToken, // токен пользователя
'notification' => $notification,
'priority' => 'high'
];
// Ваш серверный ключ от Firebase Cloud Messaging
$serverKey = 'YOUR_FIREBASE_SERVER_KEY';
// Заголовки для запроса
$headers = [
'Authorization: key=' . $serverKey,
'Content-Type: application/json'
];
// Инициализация cURL
$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_POSTFIELDS, json_encode($fields));
// Выполнение запроса и получение результата
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
Замените YOUR_FIREBASE_SERVER_KEY на серверный ключ, который можно получить в консоли Firebase в разделе Настройки проекта -> Облако обмена сообщениями (Cloud Messaging).
Советы по настройке Push-уведомлений и распространенные ошибки
• Поддержка нескольких платформ: если ваше приложение работает на Android и iOS, убедитесь, что сервис уведомлений поддерживает обе платформы и настроен для них.
• Тестирование: сначала протестируйте интеграцию на тестовой среде. Убедитесь, что уведомления приходят на все привязанные устройства.
• Управление токенами: регулярно обновляйте Push-токены в базе, поскольку токен может измениться при обновлении приложения или изменении настроек устройства.
Если у вас возникнут вопросы по настройке, обратитесь к вашему менеджеру за консультацией.