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

时间:2016-06-26 05:51:02

标签: ios notifications passwords darwin springboard

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

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

  1. 打开/关闭设备屏幕
  2. 手机锁定/解锁(通过自动锁定设置/按电源按钮)
  3. 密码激活(通过要求密码设置)
  4. 据我研究,我可以达到1& 2由Darwin Notification Center&组合notify_get_state有4个事件:

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

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

    我也知道有一种方法可以获得锁定状态和放大器状态。密码状态,使用SBGetScreenLockStatus(port, &locked, &passcode)。 但它正在使用私有框架,因此它将被Apple拒绝。

    从这个主题(Programatically Checking if a Passcode Lock is Set)我只有在手机上设置了密码才能得到。

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

1 个答案:

答案 0 :(得分:1)

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