从主屏幕检测密码锁定状态
Posted
技术标签:
【中文标题】从主屏幕检测密码锁定状态【英文标题】:Detect passcode lock state from Home screen 【发布时间】:2016-06-26 05:51:01 【问题描述】:我想知道是否有任何方法(应该在 Appstore 上获得批准)来检测设备密码何时在主屏幕上激活。
基本上,我的应用想知道那些电话事件:
-
设备屏幕开启/关闭
手机锁定/解锁(通过自动锁定设置/按电源按钮)
密码激活(通过要求密码设置)
据我研究,我可以通过将 Darwin Notification Center
和 notify_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。可能是它们有一些外部性,您可以检查这些外部性以检测设备是否已关闭。也许他们会切换到另一种模式或类似的模式。以上是关于从主屏幕检测密码锁定状态的主要内容,如果未能解决你的问题,请参考以下文章