从主屏幕检测密码锁定状态

Posted

技术标签:

【中文标题】从主屏幕检测密码锁定状态【英文标题】:Detect passcode lock state from Home screen 【发布时间】:2016-06-26 05:51:01 【问题描述】:

我想知道是否有任何方法(应该在 Appstore 上获得批准)来检测设备密码何时在主屏幕上激活。

基本上,我的应用想知道那些电话事件:

    设备屏幕开启/关闭 手机锁定/解锁(通过自动锁定设置/按电源按钮) 密码激活(通过要求密码设置)

据我研究,我可以通过将 Darwin Notification Centernotify_get_state 与 4 个事件相结合来实现 1 和 2:

 com.apple.springboard.lockstate
 com.apple.springboard.lockcomplete
 com.apple.springboard.hasBlankedScreen
 com.apple.iokit.hid.displayStatus

我得到的问题是这些事件只告诉我锁定/解锁状态,而不是密码状态。意味着如果您在 5 分钟后需要密码,您可以先锁定/解锁手机而无需密码4 分钟。

我也知道有一种方法可以通过使用SBGetScreenLockStatus(port, &locked, &passcode) 来获取锁定状态和密码状态。 但它使用的是私有框架,所以它会被苹果拒绝。

从这个主题(Programatically Checking if a Passcode Lock is Set)我只知道手机上是否设置了密码。

更新:我发现密码生效时有一个回调事件。 com.apple.mobile.keybagd.lock_status 但找不到任何关于它的文件。当我使用notify_get_state 时它不会改变值。

【问题讨论】:

【参考方案1】:

我认为您可以找到一些私有 API 来获取它。但是,这些很可能不会得到 Apple 的批准。他们有可能会错过它。但是,他们会拒绝基于私有 API 使用的应用。

【讨论】:

没错。这就是为什么我正在研究是否有办法通过公共 API 实现这一目标。但到目前为止还没有结果。 @nahung89 我建议研究一下 WiFi、蓝牙和其他网络 API。可能是它们有一些外部性,您可以检查这些外部性以检测设备是否已关闭。也许他们会切换到另一种模式或类似的模式。

以上是关于从主屏幕检测密码锁定状态的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式使用密码设置屏幕锁定?

Mac使用技巧:移除Mac开机密码或屏幕锁定密码的方法

如何检测用户是不是启用了密码或 PIN?

iPhone iOS如何在应用程序从后台恢复时添加密码/密码锁定屏幕?

js监控输入密码检测大写键盘是否锁定

iPhone密码锁定机制