2016-08-11 10 views
0

Ich versuche, meine App wieder zu einer "Home" -Ansicht zu öffnen, nachdem der Benutzer die App auf dem Gerätebildschirm beendet hat. Die Absicht ist, sie daran zu hindern, zum Login-Bildschirm zurückzukehren, sobald sie sich angemeldet haben (wenn sie beispielsweise gerade anfangen, die App zu verlassen) und die Ansicht "Home" (eingeloggt) zu starten, wenn sie das Fenster wieder öffnen App nach dem Zurückziehen davon.Wie öffne ich die App erneut von der Seite, von der die App entfernt wurde?

Wenn die App gestartet wird, wird der Benutzer zu einer Ladeansicht weitergeleitet, in der die App den Authentifizierungsstatus überprüft. Sobald der Status erreicht ist, überträgt er sie entweder zu einer "Login" -Ansicht oder einer "eingeloggten" Ansicht. Sobald sich ein Benutzer anmeldet, möchte ich nicht, dass er zur Anmeldesicht oder zur Ansicht "Laden" zurückkehren kann. Daher habe ich clearHistory implementiert, wenn ich von der Ansicht 'Laden' oder 'Anmelden' zum ' eingeloggt 'Ansicht.

Das Problem ist, wenn ich in der "Eingeloggt" -Ansicht auf die Zurück-Taste des Geräts tippe, wird es wie beabsichtigt aus der App auf das Gerät zurückgesetzt. Wenn ich die App jedoch entweder über das App-Symbol oder über die "letzten Bildschirme" (Android) wieder öffne, wird die App erneut geöffnet, es wird jedoch die Ansicht "Laden" angezeigt. Nur dieses Mal wird es tatsächlich nichts tun, was nicht wirklich das Problem ist. Wieder ist es die Tatsache, dass diese Ansicht in erster Linie zeigt.

Hier ist mein ‚Laden‘ Ansicht Navigationscode:

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); 
} 

Für die Login-Seite wird clearHistory auch verwendet, wenn auf die Homepage auf Login navigieren.

Aus meiner Sicht sollte die gesamte Historie beim Navigieren gelöscht werden und die Ansicht als den einzigen Verlaufseintrag anzeigen. Wenn ein Benutzer also zurückgreift, sollte er direkt von der letzten Ansicht (Home) zum Gerätebildschirm gehen (was er tut) und diese Ansicht öffnen, wenn der Benutzer die App erneut öffnet (was nicht der Fall ist). Irgendwelche Tipps hier?

Antwort

1

Hier ist, was ich tue:

Auf Ihrem app.ts (oder js) Sie eine Möglichkeit, müssen überprüfen, ob der Benutzer die application.start() vor dem Aufruf geauthet wurde.

Wenn sich ein Benutzer bei Ihrer App anmeldet, speichern Sie einen Schlüssel, der dies anzeigt, indem Sie das Anwendungseinstellungen Modul verwenden.

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

Auf den app.ts (js) Datei

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 '''); 
    } 
Verwandte Themen