【问题标题】:Qt session management on Android and IOSAndroid 和 IOS 上的 Qt 会话管理
【发布时间】:2018-01-09 13:08:00
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: android c++ ios qt session


    【解决方案1】:

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

    main.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 中) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      相关资源
      最近更新 更多