美文网首页
锁屏监听

锁屏监听

作者: 北方的冬天008 | 来源:发表于2018-01-23 14:49 被阅读0次

    方法一:

    导入头文件和宏定义

    //  AppDelegate.m#import #define NotificationLock CFSTR("com.apple.springboard.lockcomplete")#define NotificationChange CFSTR("com.apple.springboard.lockstate")#define NotificationPwdUI CFSTR("com.apple.springboard.hasBlankedScreen")#define LOCK_SCREEN_NOTIFY @"LockScreenNotify"

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    定义监听锁屏函数

    //  AppDelegate.mstaticvoidscreenLockStateChanged(CFNotificationCenterRef center,void*observer,                                  CFStringRef name,constvoid*object,                                  CFDictionaryRef userInfo){NSString*lockstate = (__bridgeNSString*)name;if([lockstate isEqualToString:(__bridgeNSString*)NotificationLock])    {// 发送锁屏通知[[NSNotificationCenterdefaultCenter] postNotificationName:LOCK_SCREEN_NOTIFY                                                            object:nil];NSLog(@"Lock screen.");    }else{// 此处监听到屏幕解锁事件(锁屏也会掉用此处一次,所有锁屏事件要在上面实现)NSLog(@"Lock state changed.");    }}

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    添加监听函数

    - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {  CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),NULL,                                    screenLockStateChanged,                                    NotificationLock,NULL,                                    CFNotificationSuspensionBehaviorDeliverImmediately);    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),NULL,                                    screenLockStateChanged,                                    NotificationChange,NULL,                                    CFNotificationSuspensionBehaviorDeliverImmediately);}

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    注意:该方法已被 Apple 禁止使用,上传的 App 审核会被拒绝! 

    方法二: 

    实现 applicationProtectedDataWillBecomeUnavailable: 方法监听锁屏

    //  AppDelegate.m#define LOCK_SCREEN_NOTIFY @"LockScreenNotify"- (void)applicationProtectedDataWillBecomeUnavailable:(UIApplication*)application{    [[NSNotificationCenterdefaultCenter] postNotificationName:LOCK_SCREEN_NOTIFY                                                        object:nil];NSLog(@"Lock screen.");}

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    实现 applicationProtectedDataDidBecomeAvailable: 方法监听解锁

    //  AppDelegate.m#define UN_LOCK_SCREEN_NOTIFY @"UnLockScreenNotify"- (void) applicationProtectedDataDidBecomeAvailable:(UIApplication*)application{    [[NSNotificationCenterdefaultCenter] postNotificationName:UN_LOCK_SCREEN_NOTIFY                                                        object:nil];NSLog(@"UnLock screen.");}

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    官网 API 说明如下: 

    When the user locks the device, the system calls the app delegate’s applicationProtectedDataWillBecomeUnavailable: method. Data protection prevents unauthorized access to files while the device is locked. If your app references a protected file, you must remove that file reference and release any objects associated with the file when this method is called. When the user subsequently unlocks the device, you can reestablish your references to the data in the app delegate’s applicationProtectedDataDidBecomeAvailable: method.

    相关文章

      网友评论

          本文标题:锁屏监听

          本文链接:https://www.haomeiwen.com/subject/umkraxtx.html