APP从后台模式进入前台后打开指定页面

在iOS开发中,当APP从后台返回超过一定时间,需验证用户身份。本文介绍了两种方案:一是设置指定校验界面,但回退原界面存在问题;二是覆盖当前界面,使用UIWindowLevel控制验证视图。UIWindowLevel决定了窗口的显示顺序,系统提供三个预设级别,并可通过自定义值调整优先级。
摘要由CSDN通过智能技术生成

需求:前段时间在开发项目的时候,有一个需求,因为APP的一些信息比较敏感,所以如果用户在操作APP的过程中按下home键退到后台,超过指定的时间然后再切换到前台时,需要验证用户设置过的指纹或者是手势来对用户进行身份验证

方案一:

当APP进入前台的时候将 rootViewController 设置为指定的校验界面.

但是有一个问题:当用户验证成功之后呢? 如何回到用户之前操作过的界面呢? 暂时我没有好的解决方案, 如果你想到了好的idea,咱们可以一起探讨下~

方案二:

当APP进入前台的时候在当前界面上覆盖一个UIWindow,并设置UIWindowLevel,当用户验证成功之后在将该Window对象隐藏或者是移除即可

代码如下:

    func applicationDidEnterBackground(_ application: UIApplication) {
        leaveTime = Date()
    }
    func applicationWillEnterForeground(_ application: UIApplication) {
        let interval = Int(Date().timeIntervalSince(leaveTime))
        
        //这里假如超过20秒后就让用户去验证
        if interval > 20
        {
            let validateVC = ValidationVC()
            
            //当用户验证成功之后重新设置下windowLevel即可;
            validateVC.closeCallBack = {
                self.gestureWindow?.windowLevel = -1
            }
            let window = UIWindow(frame: UIScreen.main.bounds)
            window.windowLevel = UIWindowLevelAlert + 1
            window.rootViewController = validateVC
            window.makeKeyAndVisible()
            self.gestureWindow = window
        }
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值