Документация
ОС Аврора 5.1.5

Push-уведомления

Получив push-уведомление, приложение сначала проверяет, не находится ли оно на переднем плане, а затем анализирует поле данных push-уведомления и ищет ключ mtype в полученном JSON.

Если mtype равно:

  • action — уведомление не будет отображаться;
  • notify — будет показан только верхний баннер;
  • system_notify — уведомление будет отображаться только в центре уведомлений.

При любом другом значении, пустом или даже при отсутствии mtype будут показаны оба push-уведомления (баннер и центр уведомлений).

Выбор способа отображения уведомления реализован в методе processNotifications класса Application:

void Application::processNotifications(const Aurora::PushNotifications::PushList &pushList)
{
    qDebug() << QStringLiteral("Application %1: got %2 pushes").arg(applicationId()).arg(pushList.count());

    for (const Aurora::PushNotifications::Push &push : pushList)
    {
        qDebug() << "{";
        qDebug() << "Title: " << push.title;
        qDebug() << "Data: " << push.data;
        qDebug() << "Message: " << push.message;
        qDebug() << "}";
        // Здесь можно отобразить уведомление в графическом интерфейсе, например, добавить как элемент модели списка.
    }

    auto state = qGuiApp->applicationState(); // qGuiApp — глобальный объект Qt, указывающий на данное приложение.

    if (state != Qt::ApplicationActive) // Если приложение работает в фоновом режиме, Push-уведомления будут отображены как уведомления на экране.
    {
        for (const Aurora::PushNotifications::Push &push : pushList)
        {
            Notification notification;
            notification.setCategory(QString("common"));

            auto jsonDcoument = QJsonDocument::fromJson(push.data.toUtf8());
            auto type = jsonDcoument.object().value("mtype").toString();

            if (type == QStringLiteral("action"))
            {
                continue;
            }

            if (type == QStringLiteral("notify"))
            {
                notification.setPreviewSummary(push.title);
                notification.setPreviewBody(push.message);
            }
            else if (type == QStringLiteral("system_notify"))
            {
                notification.setSummary(push.title);
                notification.setBody(push.message);
            }
            else
            {
                notification.setSummary(push.title);
                notification.setBody(push.message);
                notification.setPreviewSummary(push.title);
                notification.setPreviewBody(push.message);
            }
            notification.publish();
        }
    }
}

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.