sesion que pasa iniciar desvincular desde cuenta crear cierro buscar borra apple iphone session xamarin.ios

iniciar - que pasa si cierro sesion en icloud en mi iphone



Mantenimiento de la sesiĆ³n en monotouch? (2)

Mi aplicación basada en el dominio bancario necesita manejo de sesión. Cuando la aplicación está inactiva (sin ningún evento táctil después de abrir la aplicación) debe calcular la hora en segundo plano.

Manejo el mantenimiento de la sesión cuando la aplicación entró en eventos foreground y onResignInactive en AppDelegate.

Necesito manejar la aplicación en vivo. Por favor, ayúdame a descubrir esta característica


Si estuviera escribiendo esto como una aplicación web, colocaría la lógica de tiempo de espera de la sesión en el servidor, no en el cliente. También tomaría el mismo enfoque con un cliente móvil: haga que el servidor administre la sesión y el tiempo de espera.


Aquí hay una respuesta para obj-C: acción de iOS después del período de inactividad (sin interacción del usuario)

Por lo tanto, a nivel de aplicación, mantienes un temporizador y lo reinicias en cualquier evento. Entonces puede hacer su trabajo (como ocultar cualquier información sensible) en el controlador del temporizador.

Ahora, al código.

En primer lugar, debe subclase UIApplication y asegúrese de que el suyo esté instanciado:

//Main.cs public class Application { static void Main (string[] args) { //Here I specify the UIApplication name ("Application") in addition to the AppDelegate UIApplication.Main (args, "Application", "AppDelegate"); } } //UIApplicationWithTimeout.cs //The name should match with the one defined in Main.cs [Register ("Application")] public class UIApplicationWithTimeout : UIApplication { const int TimeoutInSeconds = 60; NSTimer idleTimer; public override void SendEvent (UIEvent uievent) { base.SendEvent (uievent); if (idleTimer == null) ResetTimer (); var allTouches = uievent.AllTouches; if (allTouches != null && allTouches.Count > 0 && ((UITouch)allTouches.First ()).Phase == UITouchPhase.Began) ResetTimer (); } void ResetTimer () { if (idleTimer != null) idleTimer.Invalidate (); idleTimer = NSTimer.CreateScheduledTimer (new TimeSpan (0, 0, TimeoutInSeconds), TimerExceeded); } void TimerExceeded () { NSNotificationCenter.DefaultCenter.PostNotificationName ("timeoutNotification", null); } }

Esto asegurará que tenga un temporizador en ejecución (advertencia: el tiempo comienza solo en el primer evento), que el temporizador se restablecerá a sí mismo con cualquier toque, y que un tiempo de espera enviará una notificación (llamada "timeoutNotification").

Ahora puede escuchar esa notificación y actuar en consecuencia (probablemente presionando una tapa ViewController)

//AppDelegate.cs [Register ("AppDelegate")] public partial class AppDelegate : UIApplicationDelegate { UIWindow window; testViewController viewController; public override bool FinishedLaunching (UIApplication app, NSDictionary options) { window = new UIWindow (UIScreen.MainScreen.Bounds); viewController = new testViewController (); window.RootViewController = viewController; window.MakeKeyAndVisible (); //Listen to notifications ! NSNotificationCenter.DefaultCenter.AddObserver ("timeoutNotification", ApplicationTimeout); return true; } void ApplicationTimeout (NSNotification notification) { Console.WriteLine ("Timeout !!!"); //push any viewcontroller } }

@Jason tuvo un muy buen punto de que no debe confiar en el tiempo de espera del cliente para la administración de su sesión, pero probablemente también deba mantener un estado de servidor (y tiempo de espera).