2013年2月28日 星期四

獲得 iOS 系統狀態事件

來自 http://www.tanhao.me/pieces/966.html | 老谭

老潭的部落格蠻有深度的,可以多看看

在OSX开发的程序中,我们经常需要知道系统的一些状态改变而对程序做出一定的处理,比如系统睡眠、唤醒、切换用户、屏幕关闭、显示屏保等等系统状态。

获取这些状态改变的需要两种方式,方式1:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self

 

selector:@selector(sleepMethod:)

 

name:NSWorkspaceWillSleepNotification

 

object:nil];

 

//其中能捕获到的状态有:

 

NSWorkspaceWillSleepNotification睡眠

 

NSWorkspaceDidWakeNotification从睡眠中唤醒

 

NSWorkspaceWillPowerOffNotification当用户注销或关机

 

NSWorkspaceSessionDidResignActiveNotification被切换到另一用户

 

NSWorkspaceSessionDidBecomeActiveNotification被切换回到当前用户

 

NSWorkspaceScreensDidSleepNotification屏幕睡眠

 

NSWorkspaceScreensDidWakeNotification屏幕唤醒

对于某一些系统状态(如屏保出现)就需要以下的NSDistributedNotificationCenter(跨进程的通知)来实现了:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

[[NSDistributedNotificationCenter defaultCenter] addObserver:self

 

selector:@selector(screensaverStart:)

 

name:@"com.apple.screensaver.didstart"

 

object:nil];

 

//其中的通知名称可以是:

 

com.apple.screensaver.didstart屏保开始

 

com.apple.screensaver.willstop屏保将要结束

 

com.apple.screensaver.didstop屏保结束

 

com.apple.screenIsLocked屏幕锁住

 

com.apple.screenIsUnlocked屏幕解锁

本文固定链接: http://www.tanhao.me/pieces/966.html | 老谭

沒有留言: