Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在一段时间后自动注销用户?_Ios_Swift - Fatal编程技术网

Ios 如何在一段时间后自动注销用户?

Ios 如何在一段时间后自动注销用户?,ios,swift,Ios,Swift,在登录到我的应用程序时,我从特定用户的后端API获得当前用户登录有效的时间。我将这个liveTime(参数)保存到NSUserDefaults 我的要求是在liveTime变为0时再次显示登录页面。如果该特定用户终止了应用程序,并且liveTime大于0,则在登录后将显示默认页面 请分享您的经验如何做或什么是解决此类问题的最佳做法。如果有人已经完成了,请分享代码片段。也许这可以帮助您 func afterDelay(seconds: Double, closure: () -> ()) {

在登录到我的应用程序时,我从特定用户的后端API获得当前用户登录有效的时间。我将这个liveTime(参数)保存到NSUserDefaults

我的要求是在liveTime变为0时再次显示登录页面。如果该特定用户终止了应用程序,并且liveTime大于0,则在登录后将显示默认页面


请分享您的经验如何做或什么是解决此类问题的最佳做法。如果有人已经完成了,请分享代码片段。

也许这可以帮助您

func afterDelay(seconds: Double, closure: () -> ()) {
    let when = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC)))
    dispatch_after(when, dispatch_get_main_queue(), closure)
}
调用函数

 self.afterDelay(4) {
                    // Write what you want to happen after 4 sec. You can increase the number
                    self.dismissViewControllerAnimated(true, completion: nil)
                }

解决方案是在NSUserDefaults中跟踪上次登录时间戳和从服务器检索到的上次最长生存时间(除非必须在那一刻获取[由于与服务器通信带来的延迟而不合适的事情])

然后,在初始控制器的
视图didload
或AppDelegate(由您选择)中,检查该时间是否在允许的最大时间之后,并相应地继续

更新:

最佳做法:

1.-添加某种等待页面,让用户在那里等待,直到您从服务器检索数据

2.-收到该数据后,检查保存在NSUserDefaults中的时间戳,然后进入登录欢迎页面


3.-如果用户登录,则在NSUserDefaults

中更新时间戳,以便您在将来用户登录时使用添加您想要的时间间隔来创建过期日期。然后,你只需要检查这个日期是过去的还是将来的,并根据它决定做什么,谢谢你的评论。用例是->如果liveTime等于30天,那么用户应该在30天内登录。如果用户在30天之前注销,则liveTime将变为0并再次登录,liveTime将变为30天或特定用户在该时间发送的任何API。我还必须处理此类用例。每当用户登录时,将“liveTime”保存在NSUserDefault中。无论何时,当他们尝试执行要求对其进行身份验证的操作时,如果live time已过期,请检查live time是否尚未完全过期,注销它们并将它们重定向到登录页面。@BobbyW您能分享最佳实践后的代码片段吗?@LeoDabus和Hugo请帮助我了解特定的用例场景?用户登录后,我是否可以启动报警管理器?或者,您可以分享最佳实践的代码片段吗?只有在登录时,我才能获得此实时信息。不是任何其他API。