Android 和 IOS 上的 Qt 会话管理



我目前正在使用Qt Quick Controls 2为Android和IOS开发一个应用程序,该应用程序可以登录。帐户凭据将存储在外部 SQL 数据库中。我已经弄清楚了如何与数据库进行交互,但是我无法弄清楚如何在Qt for Android和IOS中使用会话,以便用户不需要每次都键入登录凭据。

一种可能的方法是将凭据存储在手机上本地的文件,然后在每次启动应用时访问该文件。但是,我不确定这是否是最好和最安全的方法。

谢谢。

QSettings 类用于状态管理。QSettings信息通常存储在Windows上的系统注册表中,以及macOS和iOS上的属性列表文件中。以下是使用 QSettings 存储/检索会话参数的原始示例代码。您可以扩展以包括所需的会话登录管理方案:

主.cpp

int main( int argc, char ** argv ) {
QApplication app( argc, argv );
app.setOrganizationName("myOrg");
app.setOrganizationDomain("myOrg.net");
app.setApplicationName("qsettings-test");
MyMainWindow mw;
mw.show();
return app.exec();
}

然后在您的源.cpp

void MyMainWindow::readSettings() {
QSettings settings;
QString user = settings.value("UserName");
int lifTime = settings.value("sessionLifeTime").toInt();;
QByteArray state = settings.value("state", QByteArray())
                                               .toByteArray();
restoreState(state);
}
// ...... lots of your code 
void MyMainWindow::closeEvent(QCloseEvent* event) {
if (maybeSave()) {
    writeSettings();
    event->accept();
} else {
    event->ignore();
}
}

void MyMainWindow::writeSettings() {
    /* Save postion/size of main window */
    QSettings settings;
    settings.setValue("sessionLifeTime", 7);
    settings.setValue("UserName", user);
    settings.setValue("state", saveState());
}

您还可以使用 QSettings 类访问 INI 和 PLIST 配置文件,对于 Android,可以考虑在构建过程中必须复制 INI 文件的位置(存储在 res 文件夹中并将其包含在 .pro 中(。

最新更新