从主屏幕检测密码locking状态

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

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

  1. 设备屏幕打开/closures
  2. 手机locking/解锁(通过自动locking设置/按电源button)
  3. 密码激活(通过需要密码设置)

据我研究, 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 

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

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

从这个主题( 编程检查是否设置了密码锁 )我只会得到如果密码设置在手机上或没有。

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

我想你可以find一些私人API来获取它。 但是,这些很可能不会被苹果公司批准。 他们有可能会错过它。 但是,他们拒绝基于私有API使用的应用程序。