iOS设备开/关通知

我明白,这个任务需要私人API和应用程序不是为AppStoredevise的。

那么,是否有可能知道系统(iOS)何时切换到closures状态以及何时醒来? 也许它发送一些关于这个系统的通知?

我假设你在设备开启/closures时正在通知通知。

我有同样的问题,通知是我的第一select。 但是我发现了更简单和更强大的解决scheme。 你看,通常只发送一次通知。 例如,如果您正在构build一个将监听这些通知的守护进程,那么您需要确保在发送设备开启通知的时刻该守护进程正在运行。 这是问题 – 你不能确定,可能会错过通知,可能会帮助你。 这对我来说看起来并不那么健壮。

所以显而易见的解决scheme是看系统正常运行时间。 你可以用这个[NSProcessInfo processInfo].systemUptime来获得它。 在我的情况下,我不需要马上知道设备closures。 我在设备文件系统的某个文件中定期保存[NSProcessInfo processInfo].systemUptime值和当前date和时间。 当设备打开,我的守护进程启动时,我比较文件的值与当前正常运行时间。 如果当前正常运行时间较小,则设备closures并打开。 从文件中的date和时间,我知道什么时候设备被closures。

首先,看看这些问题:

当iOS设备进入睡眠模式(屏幕变黑)时,有没有发现事件?

当iOS设备进入睡眠模式(屏幕变黑)时,有没有发现事件?

这里有几个你可以感兴趣的私有API:

 void SBGetScreenLockStatus (mach_port_t* port, bool *lockStatus, bool *passcodeEnabled); 

检查设备是否被locking和密码保护。

在这里你可以find一个用法: 如何find在IOS 5和以上的最前面的应用程序的紫色端口?

另外,还有一堆系统范围的通知,当设备开启/closures时会触发。

  • com.apple.mobile.keybagd.lock_status
  • com.apple.springboard.lockstate
  • com.apple.iokit.hid.displayStatus
  • com.apple.springboard.hasBlankedScreen
  • com.apple.springboard.lockcomplete

您可以使用CFNotificationCenterAddObserver()注册到它们。