如何区分锁屏和home

android 锁屏独立壁纸 之前的一个项目开发的支持锁屏壁纸,ji 阅读详情

  最近的项目中,当app进入后台时,需要执行一些操作。根据需求,还需要判断,是哪种操作导致app进入后台的:按home键;按锁屏键;在app中跳转到别的app。目前遇到的情况,就这三种。

  进入正题,找到AppDelegate.m 文件,然后:

  1、在方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中,添加如下代码:

CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),

                                   NULL,

                                   displayStatusChanged,

                                   CFSTR("com.apple.springboard.lockcomplete"),

                                   NULL,

                                CFNotificationSuspensionBehaviorDeliverImmediately);


  2、在AppDelegate.m文件中,实现上一步中所出现的displayStatusChanged方法:

staticvoid displayStatusChanged(CFNotificationCenterRef center,

                                 void *observer,

                                 CFStringRef name,

                                 const void *object,

                                 CFDictionaryRef userInfo) {

   if (name ==CFSTR("com.apple.springboard.lockcomplete")) {

        [[NSUserDefaultsstandardUserDefaults] setBool:YESforKey:@"kDisplayStatusLocked"];

        [[NSUserDefaultsstandardUserDefaults] synchronize];

    }

}


  3、在方法- ( void)applicationDidEnterBackground:( UIApplication *)application中,添加如下代码:

UIApplicationState state = [[UIApplicationsharedApplication] applicationState];

   if (state ==UIApplicationStateInactive) {

       NSLog(@"按了锁屏键");

    }

   else if (state == UIApplicationStateBackground) {

       if (![[NSUserDefaultsstandardUserDefaults] boolForKey:@"kDisplayStatusLocked"]) {

           NSLog(@"按了home键,或者跳转到另一个app");

        }

        else {

           NSLog(@"按了锁屏键");

        }

    }


  4、在方法- ( void)applicationWillEnterForeground:( UIApplication *)application 中,添加如下代码:
[[ NSUserDefaults standardUserDefaults] setBool: NO forKey: @"kDisplayStatusLocked"];

[[NSUserDefaultsstandardUserDefaults] synchronize];


  5、真机调试,查看输出。

  个人理解:这个判断思路主要是根据,当锁屏时,iOS系统会触发一个通知,即com.apple.springboard.lockcomplete,当接收到这个通知时,我们设置一个标志位,即kDisplayStatusLocked,接着在applicationDidEnterBackground方法中(以下简称后台方法),判断该标志位的值。可能有的小伙伴会问,后台方法中出现的UIApplicationStateInactive是个什么什么鬼?我的理解是,iOS7之前,若是按锁屏键进入后台,则后台方法中,application.state是UIApplicationStateInactive,而按home键进入后台,application的状态是UIApplicationStateBackground。而iOS7之后,无论是锁屏,还是home键,进入后台时,application的状态都是UIApplicationStateBackground。因此,这个含有UIApplicationStateInactive的if语句,其实是用来适应iOS7之前的系统。

  
  PS:若有错误,请不吝赐教。
ios设备home键 锁屏键区分 两个方法: 1、查看屏幕的亮度 CGFloat screenBrightness = [[UIScreen mainScreen] brightness]; if (screenBrightness > 0) { // todo } 2、监听com.apple.springboard.lockcomplet CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), 阅读详情

相关推荐

iOS监听手机锁屏状态

iPhone的锁屏监测分为两种方式监听: 1. 程序在前台,这种比较简单。直接使用Darwin层的通知就可以了: #import <notify> #define NotificationLock CFSTR(com.apple.springboard.lockcomplete) #define NotificationChange CFSTR(com.apple.springboard.lockstate) #define NotificationPwdUI CFSTR(com.apple.springboard.hasBlankedScreen) static void

iOS使用锁屏监听的私有API被拒 com.apple.springboard.lockcomplete

最近公司有个项目需要对锁屏进行监控以便进行一些操作,然后在更新新版本的时候,审核竟然被拒绝了。原因竟然是调用了 Apple 不允许使用的 锁屏API ,如下方法一;后来改成方法二,终于审核通过了。 如果不确定是哪个第三方使用了,这个可以cd 到项目根目录: grep -R 'com.apple.springboard.lockcomplete' * 他会检索出来,哪使用了

qq_15602525的博客 2998

《Sigrity SystemSI 2023+LPDDR4仿真自学笔记》(一)创建工程(Part1)

为了加强SystemSI 2023软件的熟悉度,咱们完整的走一个仿真全流程。

weixin_45199544的博客 6334

关于环信com.apple.springboard.lockcomplete被拒的解决方案

1、去环信官网下载最新的SDK,删除旧版本的HyphenateFullSDK和HyphenateSDK这样的文件夹。把新的HyphenateSDK.framework导入进来即可。(注意:UI和SDK是两回事,UI不用替换,之前修改过很多UI界面的样式和逻辑等等,不会受到SDK影响)2、把#import "EMSDK.h"替换为#import &lt;Hyphenate/Hyphenate.h&g...

zhaotao0617的博客 1175

从原理到代码:拆解UniFormer中动态位置嵌入(DPE)的3D卷积实现

本文深入解析了UniFormer模型中动态位置嵌入(DPE)模块的3D卷积实现原理与代码。DPE通过一个轻量的3D深度可分离卷积,替代传统静态位置编码,使模型能自动学习视频数据的时空位置关系。文章对比了其与Swin Transformer相对位置偏置的优劣,并提供了PyTorch实现代码与高级定制方案,为视频理解任务提供了高效灵活的动态位置编码解决方案。

weixin_29207149的博客 309

【技术拆解】Illumina边合成边测序(SBS)核心流程全解析 | 从文库构建到数据分析

本文深入解析了Illumina边合成边测序(SBS)技术的完整流程。从DNA样本的文库构建(片段化、加接头、扩增),到Flowcell上的簇生成(桥式PCR),再到核心的边合成边测序(SBS)循环(荧光标记、可逆终止),最后简述了从原始数据到生物学洞见的数据分析步骤,为理解这一主流高通量测序技术提供了清晰的框架。

weixin_29201859的博客 537

iOS_获取&区分iOS锁屏与Home事件

//put this in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),

云笔记 4777

数字人(对嘴型 Lip-sync)数据集 LRS2 介绍(含网盘链接)

LRS2(Lip Reading Sentences 2)是牛津大学与BBC合作开发的一个大规模唇语识别数据集,专门用于训练和评估数字人唇语同步(Lip-sync)技术。该数据集包含数千条来自BBC电视节目的口语句子,每个句子长度最多100个字符。官方网站为:https://www.robots.ox.ac.uk/~vgg/data/lip_reading/lrs2.html可惜需要认证,不过我已经下载好并存到网盘里了,有需要可适用如下链接下载。(仅供学习,请勿传播)

iioSnail的博客 1685

iOS开发 区分Home键和锁屏键事件

转载自:https://a1049145827.github.io/2018/01/06/iOS%E5%BC%80%E5%8F%91-%E5%8C%BA%E5%88%86Home%E9%94%AE%E5%92%8C%E9%94%81%E5%B1%8F%E9%94%AE%E4%BA%8B%E4%BB%B6/ 在AppDelegate文件中,由于锁屏和Home键两种操作,我们接到的事件是一样的, ...

沸腾的泪水的专栏 1038

Transformer实战(1)——词嵌入技术详解

词嵌入的核心思想是,通过将词语表示为稠密的向量,使得计算机可以更有效地处理和理解文本中的语义关系。在本节中,我们学习了单词分布式表示的概念及其实现,包括静态嵌入和动态嵌入,实现了 Word2Vec 和 GloVe 模型,并介绍了如何使用 Gensim API 探索嵌入空间。

盼小辉丶的博客 1万+

构建企业级AI税务顾问:优化税收策略与合规

本文深入探讨了构建企业级AI税务顾问的重要性及其在实际应用中的价值。通过分析当前税务领域的挑战和问题,本文详细介绍了AI税务顾问的基本原理、技术架构、核心功能以及实践应用。文章以逐步分析的方式,从背景介绍、核心概念与联系、算法原理讲解、系统分析与架构设计、项目实战到最佳实践与展望,系统性地展示了如何利用AI技术优化税收策略并确保税务合规。文章旨在为企业和税务从业者提供实用的指导,推动AI在税务领域的创新与发展。在当前全球经济一体化的背景下,企业面临着越来越复杂的税务环境。首先,税收法规的复杂性日益增加。

AI天才研究院 1156

获取&区分iOS锁屏与Home事件

这篇转载自 http://wangqingpeng.info/blog/2013/11/04/huo-qu-and-qu-fen-iossuo-ping-yu-homeshi-jian/ 解决了今天一个困扰 前两天写一个APP时遇到一个需求,需要得到iOS的锁屏和Home事件,并分布做出响应。 在iOS7之前通过[[UIApplication sharedApplication]

3810

SpringBoot系列之实现一个AI聊天助手

本文介绍了基于Spring Boot框架实现的AI聊天助手项目。该项目使用Spring Boot 3.2.3、Spring AI 1.0.0-M5等技术栈,集成DeepSeek-R1-Distill-Llama-8B模型实现智能对话功能。文章详细介绍了项目配置流程、运行方式和核心代码实现,包括ChatMessage模型类和服务类ChatService的关键功能,如消息处理、历史记录管理和AI响应获取等。读者可通过提供的GitHub链接获取完整代码,快速搭建自己的AI聊天应用。

Nicky's blog 1451

onUserLeaveHint()

③如果用户点击通知栏消息,导致当前 Activity 失去焦点,③如果系统因内存不足回收 Activity,或屏幕旋转导致重建,(如银行 App 检测到用户按 Home 键,自动模糊界面)④如果当前 App 启动了一个。(但不会销毁 Activity)。(记录用户主动退出的时间点)返回桌面时,系统会调用。(用户主动退出时暂停)

qq_46279058的博客 357

TRAE智能体开发:TRAE概述

TRAE(/treɪ/)深度融合 AI 能力,是一名能够理解需求、调用工具并独立完成各类开发任务的“AI 开发工程师”,帮助你高效推进每一个项目。

王国平的博客 1269

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

监听Home键和锁屏键

看代码: import com.ucoupon.uplus.MyApplication; import com.ucoupon.uplus.utils.LogUtils; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; /**

Angus博客 1456

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Linux中的HOME目录和home目录???

Linux中的HOME目录和home目录??? 在Linux标准文件系统中,/目录是整个文件系统的根目录,其他所有的目录都要依附于根目录而存在,其中就包括常说的家目录。 那所谓的家目录在哪呢? aaa@bbb:/$ ls bin boot dev etc home lib lib32 lib64 libx32 lost+found media mnt opt proc root run sbin srv swapfile sys tmp usr var 可以看到

Goallegoal的博客 2万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iOS 判断屏幕是否锁屏

测试环境:iOS6.1 device:iphone5 获取锁屏方式区分为2种方式: 第一种(需越狱):

dengbin9009的专栏 3427

home键拦截

代码: 1 public class HomeKeyReceiver extends BroadcastReceiver { 2 3 private static final String LOG_TAG = "HomeReceiver"; 4 private static final String SYSTEM_DIALOG_REA...

banyinlve3147的博客 134

android长按home键设置的,Android中屏蔽电源键长按、Home键、Home键长按

Android中屏蔽电源键长按、Home键、Home键长按 这几个“按钮”的触发,都会产生一个Action ==Intent.ACTION_CLOSE_SYSTEM_DIALOGS的通知 区分他们三个的不同事件Android中屏蔽"电源键长按"、"Home键"、"Home键长按"这几个“按钮”的触发,都会产生一个Action ==Intent.ACTION_CLOSE_SYSTEM_DIALOG...

weixin_33863049的博客 768

iOS_开发中遇到的那些问题_5

【自编号:540】【iOS是否锁屏】设置UIApplication的idleTimerDisabled属性来指定iOS是否锁频: // 禁用休闲时钟 [[UIApplication sharedApplication] setIdleTimerDisabled: YES]; // 也可以使用这种语法 [UIApplication sharedApplication].idleTime

pre_eminent的JAVA学习园地 1204

苹果手机忘记锁屏密码怎么办?2026年5种方法实测(含保数据方案)

苹果手机忘记锁屏密码这件事,90%的人第一反应是"完了,手机要变成板砖了吗?"其实没这么严重——根据你的 iOS 版本、有没有联网、记不记得 Apple ID,这里给你分享5种屏幕密码解锁路径,并且按照"数据保不保得住"和"操作难度"两个维度把5种方法全部实测了一遍,有需要的小伙伴们可以接着往下看。

2608_95697116的博客 3613

android 监听长按home键,Android中监听"电源键长按"、"Home键"、"Home键长按"

Android中监听"电源键长按"、"Home键"、"Home键长按"这几个“按钮”的触发,都会产生一个Action ==Intent.ACTION_CLOSE_SYSTEM_DIALOGS的通知区分他们三个的不同事件的参数,就是随着Intent带过来的reason字符串,分别对应"电源键长按"(globalscreen)、"Home键"(homekey)、"Home键长按"(recentapps...

weixin_33555586的博客 1114

linux的 /home ,home/ ,/home/ 的区别

0. 前提介绍 a. /:根目录 b. home:文件夹名称,也叫目录名称 c. 后面带/表示文件夹,不带他会自动去检测,到底是文件,还是文件夹 1. 开始 /home:代表根目录下,有一个叫home的文件或文件夹,至于是什么,他会自动检测, home/:代表home文件夹 /home/:合起来就是根目录下有一个文件夹叫home ...

python_web全栈 7356
上一篇: 正确使用自定义的Cell
下一篇: UIButton与NSTimer之间的奇葩bug
CSD_YYG
博客等级 码龄11年 0粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值