Перейти к основному контенту

Интеграция с Push-уведомлениями для мобильных приложений: пошаговое руководство

В этой статье мы расскажем, как правильно настроить и интегрировать Push-уведомления со стороны серверной части мобильного приложения.

Выбор SDK

Для интеграции Push-уведомлений существует множество бесплатных решений, которые позволяют отправлять уведомления на разные платформы. Самыми популярными являются Firebase и OneSignal. Настройки этих сервисов схожи, поэтому можно выбрать любой. Мы часто рекомендуем OneSignal, так как он предоставляет удобный интерфейс для ручной отправки уведомлений и аналитики, а также позволяет группировать пользователей для таргетированной рассылки. Кроме того, его интеграция и настройка более интуитивно понятны.

Принцип работы Push-уведомлений

Независимо от выбранного сервиса, принцип работы Push-уведомлений похож:

1. Инициализация: после установки и запуска приложения происходит инициализация системы уведомлений.

2. Получение Push-токена: после инициализации сервис возвращает уникальный ключ, известный как Push-токен. Этот токен привязан к устройству и приложению, что позволяет идентифицировать его в рамках комбинации «приложение-устройство».

3. Использование Push-токена: Push-токен — это строковый ключ, который используется для отправки уведомлений на конкретное устройство через API выбранного сервиса. С помощью этого токена можно отправлять как адресные уведомления (только одному пользователю), так и массовые.

 

i.webp

Настройка на сервере: связывание 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-токены в базе, поскольку токен может измениться при обновлении приложения или изменении настроек устройства.

Если у вас возникнут вопросы по настройке, обратитесь к вашему менеджеру за консультацией.