Документация
ОС Аврора 5.1.3
Объявление приложения
Фрагмент кода класса, отвечающего за взаимодействие API push-демона и интерфейса приложения:
#pragma once
#include <QObject>
#include <push_client.h>
#include <nemonotifications-qt5/notification.h>
class Application : public QObject
{
Q_OBJECT
Q_PROPERTY(QString applicationId READ applicationId CONSTANT)
Q_PROPERTY(QString registrationId READ registrationId WRITE setRegistrationId NOTIFY registrationIdChanged)
public:
explicit Application(QObject *parent = nullptr);
bool start(const QStringList &arguments);
QString applicationId() const;
public slots:
void startGui();
QString registrationId() const;
void setRegistrationId(const QString& registrationId);
void processRegistrationError();
void processRegistrationId(const QString ®istrationId);
void processNotifications(const Aurora::PushNotifications::PushList &pushList);
signals:
void registrationIdChanged(const QString& registrationId);
private slots:
void handlePushClientInactivity();
private:
bool m_guiStarted = false;
QString m_registrationId;
Aurora::PushNotifications::Client *m_client;
QString getApplicationId() const;
};
API Aurora::PushNotifications
доступно при подключении библиотеки libpushclient
, основные
классы объявлены в заголовочном файле push_client.h
.
В конструкторе происходит подключение сигналов Aurora::PushNotifications::Client
к слотам Application
:
Application::Application(QObject *parent)
: QObject(parent),
m_client(new Aurora::PushNotifications::Client(this))
{
connect(m_client, &Aurora::PushNotifications::Client::registrationId, this, &Application::processRegistrationId);
connect(m_client, &Aurora::PushNotifications::Client::registrationError, this, &Application::processRegistrationError);
connect(m_client, &Aurora::PushNotifications::Client::notifications, this, &Application::processNotifications);
connect(m_client, &Aurora::PushNotifications::Client::clientInactive, this, &Application::handlePushClientInactivity);
connect(m_client, &Aurora::PushNotifications::Client::pushSystemReadinessChanged, this, [this](bool status) {
qDebug() << "Push system is" << (status ? "available" : "not available");
});
}