Android 和 IOS 上的 Qt 会话管理
Posted
技术标签:
【中文标题】Android 和 IOS 上的 Qt 会话管理【英文标题】:Qt session management on Android and IOS 【发布时间】:2018-01-09 13:08:00 【问题描述】:我目前正在使用 Qt Quick Controls 2 为 android 和 ios 开发一个应用程序,该应用程序具有登录可能性。帐户凭据将存储到外部 SQL 数据库中。我已经弄清楚了如何与数据库交互,但我无法弄清楚如何在 Qt for Android 和 IOS 中使用会话,这样用户就不需要每次都输入登录凭据。
一种可能的方法是将凭据存储到手机本地的文件中,然后在每次启动应用程序时访问该文件。但是,我不确定这是否是最好和最安全的方法。
谢谢。
【问题讨论】:
【参考方案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 中) .
【讨论】:
以上是关于Android 和 IOS 上的 Qt 会话管理的主要内容,如果未能解决你的问题,请参考以下文章
移动设备(iOS 和 Android)的 Google 分析会话计数错误
在 Android(和 iOS)上使用 Qt 使用 openGL 绘制具有 3d 效果的 2d 线