从主屏幕检测密码locking状态
我想知道是否有任何方法(应在Appstore上批准)来检测设备密码何时在主屏幕上激活。
基本上,我的应用程序想知道这些电话事件:
- 设备屏幕打开/closures
- 手机locking/解锁(通过自动locking设置/按电源button)
- 密码激活(通过需要密码设置)
据我研究, 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
我得到的问题是这些事件只告诉我有关locking/解锁状态,而不是密码状态。 这意味着如果您需要密码5分钟后,您可以在第一个4分钟内locking/解锁手机,无需密码。
我也知道有一种方法可以通过使用SBGetScreenLockStatus(port, &locked, &passcode)
来获得锁状态和密码状态。 但它使用私有框架,所以它会被苹果拒绝。
从这个主题( 编程检查是否设置了密码锁 )我只会得到如果密码设置在手机上或没有。
更新:我发现有一个事件callback时密码是有效的。 com.apple.mobile.keybagd.lock_status
但找不到任何关于它的文档。 当我使用notify_get_state
时,它不会改变值。
我想你可以find一些私人API来获取它。 但是,这些很可能不会被苹果公司批准。 他们有可能会错过它。 但是,他们拒绝基于私有API使用的应用程序。