【发布时间】: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 时它不会改变值。
【问题讨论】:
标签: ios notifications passwords darwin springboard