UI-уведомления
В ОС версии 5.2 реализован новый механизм доставки push-уведомлений напрямую в UI. Данный механизм убирает необходимость создавать уведомления непосредственно из приложения. Переход на новый механизм требует только подключения новой библиотеки libpushapi.
Подключение библиотеки в проект
Для работы с Push API необходимо подключить библиотеку pushapi в конфигурационном файле проекта.
qmake
В pro-файл проекта необходимо добавить следующую строку для связи с библиотекой через pkg-config:
PKGCONFIG += pushapi
CMake
При использовании системы сборки Cmake нужно выполнить подключение библиотеки в файле CMakeLists.txt:
- Найти пакет pushapi с помощью модуля PkgConfig:
include(FindPkgConfig) pkg_search_module(PUSHAPI pushapi REQUIRED) - Добавить пути к заголовочным файлам библиотеки в список директорий для поиска:
include_directories(${PUSHAPI_INCLUDE_DIRS}) - Связать библиотеку pushapi с целевым исполняемым файлом приложения:
target_link_libraries(${PROJECT_NAME} PRIVATE # ... другие библиотеки проекта ... pushapi )
Если ранее приложение создавало уведомления с данными, пришедшими в push-уведомлении, то при переходе на новый механизм во избежание дублирования уведомлений стоит избавиться от их самостоятельного создания.
Приложение может реализовать в своём D-Bus-сервисе метод, который будет вызван при клике
на push-уведомление, если его имя было передано в поле action push-уведомления.
На текущий момент поддерживается только один метод на push-уведомление и не поддерживаются
методы с аргументами.
Сервис приложения будет автоматически определён как конкатенация полей OrganisationName
и ApplicationName из секции X-Application файла .desktop.
Для того, чтобы метод выполнялся в том числе при выключенном приложении, необходимо сделать
приложение активируемым через D-Bus путём добавления поля ExecDBus в секцию X-Application:
[X-Application]
ExecDBus = /usr/bin/pushdemo
Поддержка предыдущего механизма уведомлений сохраняется в данный момент, для продолжения работы не требуется дополнительных изменений в приложении или пересборки.
Библиотеки libpushclient и libpushapi конфликтуют друг с другом, поэтому одновременно можно использовать только одну из них.