【问题标题】:Detect passcode lock state from Home screen从主屏幕检测密码锁定状态
【发布时间】:2016-06-26 05:51:01
【问题描述】:

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

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

  1. 设备屏幕开启/关闭
  2. 手机锁定/解锁(通过自动锁定设置/按电源按钮)
  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

我得到的问题是这些事件只告诉我锁定/解锁状态,而不是密码状态。意味着如果您在 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


    【解决方案1】:

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

    【讨论】:

    • 没错。这就是为什么我正在研究是否有办法通过公共 API 实现这一目标。但到目前为止还没有结果。
    • @nahung89 我建议研究一下 WiFi、蓝牙和其他网络 API。可能是它们有一些外部性,您可以检查这些外部性以检测设备是否已关闭。也许他们会切换到另一种模式或类似的模式。
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多