如何从应用退出的页面重新打开应用?

时间:2016-08-11 03:58:08

标签: nativescript

在用户退出应用程序到设备屏幕后,我正试图让我的应用程序重新打开“主页”视图。目的是让他们在登录后不再返回登录界面(例如,当他们刚开始退出应用程序时),并在他们重新打开时启动“主页”(登录)视图退出后的应用程序。

当应用启动时,它会将用户发送到“加载”视图,应用程序会在该视图中检查身份验证状态。获得状态后,它会将其转移到“登录”视图或“登录”视图。用户登录后,我不希望他们返回登录视图或“加载”视图,因此我在从“加载”或“登录”导航时实施clearHistory查看“登录”视图。

问题是,当我在“登录”视图中点击设备后退按钮时,它将按预期从应用程序退回到设备。但是,当我从应用程序图标或“最近屏幕”(android)打开应用程序时,它将再次打开应用程序,但显示“加载”视图。只有这次它实际上不会做任何事情,这不是真正的问题。事实上,这个观点首先显示出来了。

这是我的'loading'视图导航代码:

var frameModule = require("ui/frame");

var home_navigation = {
  moduleName: "views/home/home",
  clearHistory: true
};

if(logged){
  var topmost = frameModule.topmost();
  topmost.navigate(home_navigation);
}

else {
  var topmost = frameModule.topmost();
  topmost.navigate(splash_navigation);
}

对于登录页面,在登录时导航到主页时也会使用clearHistory

根据我的理解,整个历史记录应该在导航时清除,将视图导航为唯一的历史记录条目。因此,当用户点击时,它应该直接从最后一个视图(主页)转到设备屏幕(它执行),并在用户重新打开应用程序时打开该视图(它不会)。这里有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这就是我的所作所为:

在您的 app.ts(或.js)上,您需要一些方法来检查用户在调用application.start()之前是否已经过身份验证。

当用户登录您的应用时,使用应用设置模块存储一些指示此内容的密钥。

import * as appSettings from 'application-settings'; let yourKey = 'whatever'; appSettings.setString('userAuthed', yourKey);

在app.ts(.js)文件

    import * as app from 'application';
    import * as appSettings from 'application-settings'

    let userAuthed = appSettings.getString('userAuthed');
    let x = JSON.parse(userAuthed) /// assuming you stringify some object and store it
    if (x.name && x.isValid) {
       app.start(''' your main page ''')
    } else {
       app.start(''' login page ''');
    }