如何使用 Xamarin 应用程序开发自动注销

2024-05-08

我必须在 App.xaml.cs 上添加功能才能使其正常工作。我在 OnStart 上添加了功能,但现在它会间歇性地一次又一次地将我从应用程序中注销。根据下面的代码,我需要做什么才能让它停止这样做。或者我的代码有问题。这是我最新的代码:

  namespace MyApp
  {
   public partial class App : Application
  {
    DateTime _sessionStart;

    public App()
    {
       InitializeComponent();

        DatabaseManager = new DatabaseManager(new DatabaseService());

        HttpManager = new HttpManager(new HTTPService());

        MainPage = new NavigationPage(new LoginPage());
    }

    protected override void OnStart()
    {
        // Handle when your app starts
        _sessionStart = DateTime.Now;

        Device.StartTimer(TimeSpan.FromSeconds(60), () =>
        {
            // Check if 24 hours has elapsed
            if (DateTime.Now > _sessionStart.AddHours(24))
            {
                //logout
                 MainPage = new NavigationPage(new LoginPage());
            }

            return true; // True = Repeat again, False = Stop the timer
        });


    }

    protected override void OnSleep()
    {
        // Handle when your app sleeps
    }

    protected override void OnResume()
    {
        // Handle when your app resumes
    }
}

尝试通过在 Main 上注册自定义应用程序来跟踪空闲时间(应用程序中没有触摸的时间)。请参阅下面的示例

Set TimeoutInSeconds值到您想要的间隔(例如 24 小时)

public class Application
{
    // This is the main entry point of the application.
    static void Main (string[] args)
    {
        UIApplication.Main (args, "MYCUSTOMAPP", "AppDelegate");
    }
}

[Register ("MYCUSTOMAPP")]
public class MYCUSTOMAPP : UIApplication
{ 
    const int TimeoutInSeconds = 1800; // 30 minutes
    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), (t) => TimerExceeded());

    }

    void  TimerExceeded ()
    {
        NSNotificationCenter.DefaultCenter.PostNotificationName ("TimeoutNotification", null);
    }
}

将观察者添加到您的视图控制器以将其注销

    public override void ViewDidLoad()
    {
        base.ViewDidLoad();
        NSNotificationCenter.DefaultCenter.AddObserver(new NSString("TimeoutNotification"), handleInactivityNotification);
    }

    public void handleInactivityNotification(NSNotification notification)
    {
        //Return to login page (Root view controller)
        this.NavigationController.PopToRootViewController(true);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Xamarin 应用程序开发自动注销 的相关文章

随机推荐

  • 使用 typescript 时 html-webpack-plugin 出现太多错误

    我正在使用 Webpack 和 typescript 启动一个项目 但是当我尝试运行开发服务器时 我在 html webpack plugin 上遇到很多错误 这是我的输出 gt email protected cdn cgi l emai
  • 如何强制元数据值类型为字符串?

    我在manifest xml中指定了一个元数据 如下所示
  • 使用 HttpClient 的 Xamarin.iOS 项目出现“操作无效”错误

    我创建 HttpClient 并在按钮单击处理程序中调用 GetStringAsync 方法 var client new HttpClient var response await client GetStringAsync http g
  • 如何更新状态变更指令

    我有一个根状态 它定义了 Angular 模板的整体结构 在根状态下 我包含侧边栏 其中通过根据状态更改的指令具有动态菜单 像这样 state root abstract true url root templateUrl views ro
  • [本机]:在Qt for Android中使用Java函数和第3方库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我用qt写了一个android应用程序 但我有一个很大的问题 我可以使用 调用一些原生的android API 比如调用特殊的activit
  • 过滤 Django 管理选择框的模型结果

    我今天刚开始使用 Django 到目前为止发现做简单的事情相当困难 我现在正在努力解决的是过滤状态类型列表 StatusTypes 模型是 class StatusTypes models Model status models CharF
  • AWS CLI S3API 查找路径中的最新文件夹

    我有一个非常大的桶 数十万个对象 我有一条路径 假设 s3 myBucket path1 path2 path2 获取也是文件夹的上传内容 因此 示例可能如下所示 s3 myBucket path1 path2 v6 1 0 s3 myBu
  • 在PHP中引用容器对象的方法?

    PHP 中给出以下内容
  • 是否可以找到哪个用户位于 localhost TCP 连接的另一端?

    这是一个编程问题 但它是 Linux Unix 特定的 如果我从本地主机获得 TCP 连接 是否有一种简单的方法可以告诉哪个用户在 C 程序内建立了连接而无需 shell 我知道这对于 Unix 域套接字来说并不太难 我已经知道远程 IP
  • numpy 中的分层抽样

    在 numpy 中我有一个这样的数据集 前两列是索引 我可以通过索引将数据集分成多个块 即第一个块是 0 0 第二个块是 0 1 第三个块 0 2 然后是 1 0 1 1 1 2 等等 每个块至少有两个元素 索引列中的数字可能会有所不同 我
  • 按工作日分组的熊猫 (M/T/W/T/F/S/S)

    我有一个 pandas 数据框 其中包含 YYYY MM DD arrival date 形式的时间序列 作为索引 我想按每个工作日 周一到周日 进行分组 以便计算其他日期列是平均值 中位数 标准差等 我最终应该只有七行 到目前为止我只知道
  • Maven:添加依赖项到 POM 后更新存储库的命令

    我已经向我的 POM 添加了新的依赖项 我可以运行一个简单的命令来将此依赖项下载到我的存储库吗 如果你想only下载依赖项而不做任何其他事情 那么它是 mvn dependency resolve 或者下载单个依赖项 mvn depende
  • 让 AutoMapper 自动映射前缀属性

    我希望 AutoMapper 自动映射成员 如下所示 class Model public int ModelId get set class ModelDto public int Id get set 在这里 我会做一个 CreateM
  • 通过 javascript 将 onsubmit 添加到表单

    您将如何仅通过 Javascript 将 OnSubmit 属性插入到表单中 我对 javascript 还很陌生 所以如果您能够提供详细的示例代码 那将是最有帮助的 情况是这样的 我通过 Chargify 支付平台 使用托管注册页面来处理
  • 如何使用KDTrees实现最近邻搜索?

    所以 我正在实施一个KD Tree http en wikipedia org wiki Kd tree进行最近邻搜索 我已经构建了树部分 但我认为我没有完全理解搜索部分 关于遍历树来搜索邻居 维基百科文章如下 Starting with
  • 如何为 Weblogic 10.3.6 启用 Java 持久性 2.0

    我正在使用 eclipse 和 weblogic 服务器 为了将项目添加到 weblogic 服务器 它需要支持 Java Persistance 2 0 但是当尝试安装它时 我不断收到此消息 在 Weblogic Server 安装中启用
  • C memcpy 二维数组

    我正在尝试使用将一个二维数组复制到另一个memcpy 我的代码 include
  • docker 中的 Capybara headless chrome 返回 DevToolsActivePort 文件不存在

    我正在尝试配置系统测试以使用硒中的无头铬 我有以下水豚配置 spec support capybara rb Capybara server puma Silent true RSpec configure do config config
  • 如何让背景覆盖一个单独的div?

    我正在做一个带有侧菜单的网站 屏幕的 30 是菜单 其余是内容 div的内容 我用COVER的方法放了一张背景图 我用了第一个例子 https css tricks com examples FullPageBackgroundImage
  • 如何使用 Xamarin 应用程序开发自动注销

    我必须在 App xaml cs 上添加功能才能使其正常工作 我在 OnStart 上添加了功能 但现在它会间歇性地一次又一次地将我从应用程序中注销 根据下面的代码 我需要做什么才能让它停止这样做 或者我的代码有问题 这是我最新的代码 na