Gestione della sessione con Xamarin.Forms (Android)
-
21-12-2019 - |
Domanda
Prima di tutto, non sono sicuro se ne vado anche questo il modo migliore in termini di design, ma sono un po 'nuovo per Android e molto nuovo a Xamarin.Forms. Il mio setup è una serie di ContentPage
s in un PCL Xamarin.Forms che trattano tutti con le informazioni da un servizio di riposo. Questo servizio, al momento di accedere, concede un WorkToken
che l'applicazione si verifica quindi al fine di eseguire ulteriori operazioni. Sto memorizzando questo in un ISessionManager
.
Il mio problema è un problema del flusso di lavoro. Ho un LoginPage
che voglio presentare all'utente se la loro sessione è terminata / guastata / qualunque; Fondamentalmente se non sono registrati e tentano di fare qualsiasi cosa, voglio spingere questa pagina sullo stack e forzarli a tentare di accedere e se forniscono credenziali valide, lascia che continuino da dove hanno lasciato. Tutto ciò si svolge, per la maggior parte, nel PCL, ma ho creato un'implementazione Android del ISessionManager
che viene interrogato sul metodo ContentPage
tagCoDetagCoDetagCoDetaGoDetagCoDetagCode. Ogni pagina chiama OnAppearing
TagCodeTagCode di ISessionManager
che farà proprio questo, e se non hanno effettuato l'accesso, creerà un CheckLogin
e avvia il Intent
attraverso questo. LoginActivity
essenzialmente avvolgersi attorno al LoginActivity
di PCL.
Il problema in cui sto correndo è che, facendolo in questo modo, il LoginPage
viene eseguito asincrono in cima a qualsiasi pagina chiamata. Questa pagina chiamante è in uno stato interrotto, tuttavia, perché non è ancora inizializzato correttamente attraverso il servizio di riposo ancora. Immagino che ci siano due possibili soluzioni. Esegui il LoginActivity
in modo sincrono (che non penso sia possibile) o ripensare al mio design. Ecco la configurazione Intent
:
var intent = new Intent(_context, typeof(LoginActivity));
intent.AddFlags(ActivityFlags.NewTask);
_context.StartActivity(intent);
.
Ho controllato diversi forum Xamarin per i post correlati su questo, ma non hanno trovato molto oltre i flussi di lavoro di base di base in Xamarin.Forms.
Modifica: ho trovato qualcosa di analogo a quello che sto cercando di fare qui:
Soluzione
Perché stai creando una loginattività?È perché devi usare qualcosa di nativo da Android?
Il mio primo pensiero è che dopo aver controllato lo stato del token sull'oratoraggio, è possibile decidere di spingere o meno il Modal per la pagina di accesso, dopo aver eseguito il login dell'utente e il token è salvato, puoi saltare ilModal e mostrerà la pagina precedente che l'utente era.