Was ich normalerweise in meinen Apps mache, folgt.
Ich habe IAuthenticationService
, die eine State
Eigenschaft hat, die LoggedIn
oder LoggedOut
sein kann. Wenn sich der Sitzungszustand aufgrund einer expliziten Anmeldung geändert hat oder das Token zum Beispiel abgelaufen ist, setze ich State
auf LoggedOut
. Außerdem feuere ich eine Broadcast-Nachricht SessionStateChanged
durch Messenger
, so kann ich diese Nachricht rund um die App abfangen, und reagieren entsprechend in UI-Ebene, wie Bildschirmstatus ändern und so weiter.
Wenn Sie den Benutzer vollständig anmelden müssen, ich meine Show Login-Seite, wenn State
LoggedOut
ist, was Ihr Fall ist, mache ich folgendes. Ich benutze Xamarin.Forms, aber der Ansatz wäre ähnlich, wenn Sie natives iOS oder Android verwenden. In meinem Haupt App
Klasse (die, die von Xamarin.Forms.Application
ableitet) erstelle ich einen Methodenaufruf UpdateMainPage
, so etwas wie diese
private async void UpdateMainPage()
{
if (_authService.State == SessionState.LoggedIn)
MainPage = new NavigationPage(new RequestPage());
else
MainPage = new NavigationPage(new SignInPage());
}
Was ich ändern passiert einfach die Root-Seite der Anwendung SignIn Strom oder Hauptfluss in Abhängigkeit von SessionState
. Dann mache ich in meinem Konstruktor folgendes.
public FormsApp()
{
InitializeComponent();
_authService = Mvx.Resolve<IAuthenticationService>();
UpdateMainPage();
var messenger = Mvx.Resolve<IMvxMessenger>();
_sessionStateChangedToken = messenger.Subscribe<SessionStateChangedMessage>(HandleSessionStateChanged);
}
Was ich tun muss, muss ich vorher Haupt-Seite einrichten, dann abonniere ich SessionStateChanged
Veranstaltung, wo ich UpdateMainPage
private void HandleSessionStateChanged(SessionStateChangedMessage sessionStateChangedMessage)
{
UpdateMainPage();
}
ich für mehrere Anwendungen verwendet, um dieses Ansatzes auslösen, und es funktioniert Perfekt für mich. Hoffe, das hilft
Ist Ihre Splash-Seite eine XAML/C# -Seite oder Aktivität? Wenn seine Aktivität dann wird das nicht funktionieren. –