检查应用是否第一次运行

问题描述 投票:1回答:1

我是移动开发的新手,我有一个相当愚蠢的问题。我如何检查用户是否第一次运行应用程序(Android和iOS)?

编辑:

我需要这个检查的原因是我有一个初学者的介绍SwipeView,一旦它读了一次它应该总是打开主应用程序屏幕。

我已经尝试过@TrebledJ建议的方式,它似乎工作正常,或者在main.cpp中这样做是愚蠢的吗?

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QSettings>

int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

QGuiApplication app(argc, argv);

QSettings settings;
QVariant firstRun = settings.value("first-run");

QQmlApplicationEngine engine;
QUrl startingScreen(QStringLiteral("qrc:/main.qml"));

if(!firstRun.isValid())
    settings.setValue("first-run", true);
else
    startingScreen.setUrl(QStringLiteral("qrc:/start.qml"));

engine.load(startingScreen);
if (engine.rootObjects().isEmpty())
    return -1;

return app.exec();
}
c++ qt mobile qml qtquick2
1个回答
1
投票

使用QSettings检查设定值。

QSettings settings;
QVariant val = settings.value("first-time");
if (!val.isValid()) {
    // ... first run
    settings.setValue("first-time", false);  // set a value so that the value is valid on the next run    
} else {
    // ... not first run
}

在QML中,有Settings QML类型。

import Qt.labs.settings 1.0

Settings {
    id: settings
    property bool isFirstTime: true
}

Component.onCompleted: {
    if (settings.isFirstTime) {
        // ... first run
        settings.isFirstTime = false;
    } else {
        // ... not first run
    }
}

但是,根据文件:

注意:通过导入Qt.labs.settings模块可以使用此类型。 Qt.labs模块中的类型不保证在将来的版本中保持兼容。

考虑到非保证,Felgo / V-Play的API有一个Storage QML类型,它也可以执行QML检查。 (他们的文档中的第一个示例实现了这一点。)

© www.soinside.com 2019 - 2024. All rights reserved.