Идентификатор приложения
Для успешной работы приложения необходимо создать файл /usr/share/omp-reference-push-example/applicationid и добавить в него идентификатор приложения, который был получен вместе с другими настройками подключения к серверу Сервиса уведомлений. Для этого требуется выполнить на устройстве команду:
echo "идентификатор" > /usr/share/omp-reference-push-example/applicationid
Следует убедиться, что у файла достаточно прав, чтобы пользователь мог читать этот файл. Для выдачи прав файлу можно выполнить на устройстве команду:
chmod 644 /usr/share/omp-reference-push-example/applicationid
В классе Application
идентификатор из /usr/share/omp-reference-push-example/applicationid
можно считать в методе getApplicationId()
следующим образом:
QString Application::getApplicationId() const
{
QFile applicationIdFile("/usr/share/omp-reference-push-example/applicationid");
qDebug() << "Try to get clinent id from file " << applicationIdFile.fileName() << " with permissions " << applicationIdFile.permissions();
if (applicationIdFile.exists() && applicationIdFile.open(QIODevice::ReadOnly))
{
auto data = applicationIdFile.readAll().trimmed();
qDebug() << "Read from file and use " << data << " as application id";
return data;
}
else
{
qDebug() << "Did not find a file " << applicationIdFile.fileName() << " or can no open it or have no permissions. Use omp_reference_push_example as application id";
return QStringLiteral("omp_reference_push_example");
}
}
Альтернативный вариант указания applicationId
—
это задать его непосредственно в коде приложения.
В методе start()
класса Application
считывается идентификатор приложения, который затем
передаётся push-демону:
bool Application::start(const QStringList &arguments)
{
auto applicationId = getApplicationId();
m_client->setApplicationId(applicationId); // Регистрация в Push-демоне
if (arguments.indexOf(QStringLiteral(”/no-gui”)) == -1)
{
startGui();
}
return true;
}
Также при старте обрабатываются аргументы командной строки arguments
.
Отсутствие аргумента /no-gui
может служить сигналом запуска графического интерфейса
в методе startGui()
:
void Application::startGui()
{
if (m_guiStarted)
{
return;
}
m_client->registrate();
qInfo() << "Starting GUI";
m_guiStarted = true;
auto view = AuroraApp::createView();
view->rootContext()->setContextProperty("ApplicationInstance", this);
// Здесь можно указать другие настройки графического интерфейса
view->setSource(AuroraApp::pathTo(QStringLiteral("qml/omp-reference-push-example.qml"))); // Здесь можно указать путь к главной qml-странице
view->show();
}