zoukankan      html  css  js  c++  java
  • iOS开发——锁屏监听

     公司所做的项目,锁屏监听是为了60秒后,解锁瓶后显示【手势解锁】或【指纹验证】;

    第一步:AppDelegate.m 头部导入

    #import <notify.h>

    #define NotificationLock CFSTR("com.apple.springboard.lockcomplete")

    #define NotificationChange CFSTR("com.apple.springboard.lockstate")

    #define NotificationPwdUI CFSTR("com.apple.springboard.hasBlankedScreen")

    第二步:在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法内加入

    以下代码

    CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, screenLockStateChanged, NotificationLock, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
        
        CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, screenLockStateChanged, NotificationChange, NULL, CFNotificationSuspensionBehaviorDeliverImmediately);

    第三步:在appDelege.m中加入新的方法(C语言的)

    static void screenLockStateChanged(CFNotificationCenterRef center,void* observer,CFStringRef name,const void* object,CFDictionaryRef userInfo)

    {
        
        NSString* lockstate = (__bridge NSString*)name;
        
        if ([lockstate isEqualToString:(__bridge  NSString*)NotificationLock]) {
            
            NSLog(@"locked.");

         // 此处监听的系统锁屏
            
        } else {
            
            NSLog(@"lock state changed.");

        // 此处监听到屏幕解锁事件(锁屏也会掉用此处一次,锁屏事件要在上面实现)


            
        }
        
    }

    第四步:如何在C语言函数内调用OC方法  ( C语言函数内没法使用self )

      本例为了实现在appDelegate.m中通过self 调用一个方法(弹出手势解锁的方法)

     本质是通过指针来实现

    1. 声明一个全局变量,并赋nil

    AppDelegate *appDelegate = nil;

    2. 在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法内如下赋值:

    appDelegate = self;

    3.在刚才的锁屏监听的C语言函数内如下调用appDelegate OC方法,这样就不会因为self导致报错了

     [appDelegate showGestureOrFinger];

  • 相关阅读:
    Could not find package vendor/name in a version matching v-Number 是坑!
    Magento 2 Error: A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.
    七牛Qshell 常用命令打印
    VBA
    XUGUO-书呆子-搜索书箱
    Magento2 API 服务合同设计模式 依赖注入 介绍
    Magento2 Service contracts 服务合同
    Magento2自定义命令
    在Magento 2中创建管理员菜单
    Routing 为 Magento 2 一个重要的部分,本文介绍基本应用
  • 原文地址:https://www.cnblogs.com/LiuChengLi/p/5591030.html
Copyright © 2011-2022 走看看