在iOS应用中实现自动锁定功能

3
我希望为我的应用程序实现一种安全的基于时间的自动锁定功能(类似于1Password中的自动锁定功能)。用户可以选择一个密码和时间段(1、2、3、5、10、30分钟)来激活锁定。基本上,我可以在我的设备上写入一个时间戳(加密),并将其与下一次使用的当前时间进行比较。如果间隔大于所选时间段,则用户必须输入密码。但是,通过更改设备上的本地时间,此功能可能会被留下。必须有一种安全的方式(例如特殊系统计时器)来解决这个问题。因此,您无法以这种方式绕过1Password。有什么想法吗?
感谢您的帮助。
Jürgen
2个回答

0

使用:

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

现在设置一个计时器:

  [NSTimer scheduledTimerWithTimeInterval:240 target:self selector:@selector(disableIdleTimer) userInfo:nil repeats:NO];

disableIdleTimer方法设置如下:

[[UIApplication sharedApplication] setIdleTimerDisabled:NO];

完成了!


0

你应该使用互联网时间服务器。它们使用一种标准化协议叫做NTP。iOS已经内置支持读取NTP服务器时间,但这对于你作为应用程序开发者来说是不可访问的。你可以自己实现这个功能,或者你可以使用开源库,比如ios-ntp或HS NTP。


如果用户可以更改系统时间,他甚至可以禁用互联网连接...;-) - LombaX
理想情况下,时间应该从GPS更新 - 这是您可以获得的最准确的时间(基本上是原子钟),但如果他关闭了GPS,则也无法获取。 - Siba Prasad Hota
是的,我认为最好的选择是从所有这些来源读取时间,如果所有来源都不可用...只需请求密码,忽略系统时间(可能会被破解)。或者,另一种选择是在后台更新时间(通过使用后台任务,但最多只能进行10分钟),但我不确定苹果是否会批准该应用程序。 - LombaX
看看核心位置是如何计算您的位置 - GPS、蜂窝网络、Wifi等。就像这样,您可以从可用的来源更新时间。 - Siba Prasad Hota
但它也可在iOS 4.0或更高版本中使用[请查看此链接](https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSProcessInfo_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40003715) - JHC42
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接