回答
我假设您在设备开启/关闭时正在讨论通知。
我遇到了同样的问题,通知是我的第一选择。但我发现了更简单,更强大的解决方案。你看,通常只发送一次通知。例如,如果您正在构建一个将监听这些通知的守护进程,那么您需要确保它将在发送设备开启通知时运行。这就是问题 - 你不能确定,可能会错过可能帮助你的通知。它对我来说看起来并不那么健壮。
因此,显而易见的解决方案是查看系统正常运行时间。你可以通过这个[NSProcessInfo processInfo].systemUptime
获得它。在我的情况下,当设备关闭时我不需要立即知道。我在设备文件系统中的某个文件中定期保存[NSProcessInfo processInfo].systemUptime
值和当前日期和时间。当设备打开并启动我的守护进程时,我将文件中的值与当前正常运行时间进行比较。如果当前的正常运行时间较短,则设备关闭并打开。从文件中的日期和时间我知道什么时候设备被关闭。
首先,看看这些问题:
这里有几个私有的API,你可以有兴趣
void SBGetScreenLockStatus (mach_port_t* port, bool *lockStatus, bool *passcodeEnabled);
检查是否装置被锁定并且密码保护。
在这里你可以找到一个用法:How to find the purple port for the front most application in IOS 5 and above?
此外,还有系统范围的通知时,一堆设备开启/关闭其解雇。
- com.apple.mobile.keybagd.lock_status
- com.apple.springboard.lockstate
- com.apple.iokit.hid.displayStatus
- com.apple.springboard.hasBlankedScreen
- com.apple.springboard.lockcomplete
您可以使用CFNotificationCenterAddObserver()注册到它们;
谢谢,但我不需要锁定屏幕事件,但设备关闭时的事件。 –
我相信他们是紧密相关的。 com.apple.iokit.hid.displayStatus和com.apple.springboard.hasBlankedScreen也与屏幕开启/关闭直接相关 –
每次设备锁定时都会发送这些通知。所以他们在这里可能不太好。 – creker
- 1. 系统通知 - iOS设备
- 2. 从设备关掉通知
- 3. 推送通知iOS添加设备
- 4. ios推送通知多个设备
- 5. 推送通知到iOS设备
- 6. 发送推送通知到iOS设备
- 7. Phonegap,IOS,设备不收到通知
- 8. Xamarin.Forms - 推送通知 - iOS设备
- 9. ios设备收到的推送通知
- 10. iOS - 当蓝牙设备断开连接时收到通知
- 11. 设备关闭或不在网络时的IOS推送通知
- 12. iOS设备的通知中心移除通知
- 13. 关于通知iOS
- 14. 通知APNS反馈服务有关停用通知的设备?
- 15. Android/iOS上的开关(开/关)持续通知消息?
- 16. 关闭设备音量 - iOS设备
- 17. 我们如何知道通知到达iOS设备?
- 18. 设置AWS SNS将推送通知发送到iOS设备
- 19. Python - 推送通知通过FCM/APN到IOS或Android设备
- 20. 多设备插入通知
- 21. UPnP,只有设备通知
- 22. 在设备注册推送通知后,iOS获取设备令牌?
- 23. IOS设备配置文件和新设备上的推送通知
- 24. 尝试将推送通知发送到iOS设备 - 未收到推送通知
- 25. Quickblox向开发设备发送推送通知,但不向iOS上的生产设备发送
- 26. 打开/关闭Android设备
- 27. SWT:获取系统设备更改通知(USB设备连接/断开)
- 28. 通话后设备断开
- 29. iOS设备因未知原因崩溃
- 30. 当设备连接到无线网络时,iOS发布通知
“切换到关闭状态”==您关闭设备或什么? –
是的,关闭设备 –