如何在iOS上实现应用封锁器?Foqos基于FamilyControls与ManagedSettings的完整技术解析

发布时间:2026/10/24 16:55:25

如何在iOS上实现应用封锁器?Foqos基于FamilyControls与ManagedSettings的完整技术解析 【免费下载链接】foqosFoqos allows you to lock apps behind the tap of a NFC tag or scan of a QR code. Free and open source alternative to Brick, Opal, ScreenZen, Unpluq, Scrolly, Blok and more!项目地址https://gitcode.com/gh_mirrors/fo/foqos点击查看免费下载Foqos是一款免费开源的 iOS 应用封锁器App Blocker它基于苹果官方的 FamilyControls 与 ManagedSettings 两大框架让你可以封锁 App 和网站并通过 NFC 标签、二维码、计时器或手动按钮来开始/结束专注会话。本文将带你从框架原理到源码实现完整解析 Foqos 是如何在 iOS 上实现系统级应用封锁的 ️。一、为什么选 FamilyControls 与 ManagedSettings在 iOS 上实现应用封锁器只有两条官方路径框架作用在 Foqos 中的用途FamilyControls屏幕使用时间 API提供应用/网站封锁的授权与执行能力支持 DeviceActivity 后台活动调度请求 Screen Time 授权、定时封锁ManagedSettings提供ManagedSettingsStore写入系统级屏蔽Shield规则真正挡住App 弹窗、拦截应用移除/安装两者的分工非常清晰FamilyControls负责许可 时机——你有权封锁什么、什么时间封锁ManagedSettings负责执行 界面——系统弹出自定义 Shield 挡住被封锁的 App。这是 Foqos 无需越狱、无需 MDM 就能实现系统级封锁的关键也是它与 Brick、Opal 等付费应用封锁器的共同技术底座。二、整体架构5 个协同工作的 TargetFoqos 由 5 个 Target 组成各自承担一个封锁链路环节foqos/ |-- Foqos/ # 主 AppUI、策略、封锁规则写入 |-- FoqosDeviceMonitor/ # DeviceActivity 监控扩展计时器触发点 |-- FoqosShieldAction/ # Shield 按钮动作扩展临时放行逻辑 |-- FoqosShieldConfig/ # Shield 外观定制扩展主题色/趣味文案 -- FoqosWidget/ # Widget 与 Live Activity主 App管理封锁 Profile、策略选择、写入 ManagedSettings 规则DeviceActivity 扩展DeviceActivityMonitorExtension.swift 监听系统计时活动的起止在intervalDidStart/intervalDidEnd回调中启动或解除封锁——这是到点自动封锁/解封的核心触发器两个 Shield 扩展定制被封锁 App 弹出时看到的系统界面后文详述。NFC计时器封锁策略NFC标签与计时器组合的专注封锁模式三、第一步请求 Screen Time 授权FamilyControls一切的前提是获得系统授权。Foqos 通过 RequestAuthorizer.swift 封装了这一步调用AuthorizationCenter.shared.requestAuthorization(for: .individual)请求个人模式授权即用户封锁自己的设备而非儿童账户通过authorizationStatus判断当前授权状态驱动 App 的引导页跳转。对应的开发者权限在 foqos.entitlements 中声明keycom.apple.developer.family-controls/key true/⚠️ 本地开发时需要 Apple Developer 账户申请 Screen Time 权限App ID 勾选 Family Controls capability这是该框架的硬性门槛。授权数据还通过 App Groupgroup.dev.ambitionsoftware.foqos见 Shared.swift在 App 与各扩展之间共享保证 Shield 扩展、DeviceActivity 扩展能读到同一个会话状态。四、第二步写入 ManagedSettings 屏蔽规则授权完成后真正的封锁动作发生在 AppBlockerUtil.swift 中。它持有一个独立的ManagedSettingsStorelet store ManagedSettingsStore( named: ManagedSettingsStore.Name(foqosAppRestrictions) )激活封锁时它会设置以下几类系统级规则属性含义store.shield.applications按 App 黑名单封锁或白名单模式.all(except:)store.shield.webDomains封锁指定网站域名store.webContent.blockedByFilter通过 Web Content Filter 扩展拦截网页内容含成人内容自动拦截store.application.denyAppRemoval严格模式下禁止卸载被封锁的 Appstore.application.denyAppInstallation禁止安装新 App这套黑名单 / 白名单Allow Mode/ 严格模式禁止移除 App三档设计正是应用封锁器对抗直接卸载绕过的经典做法。停止会话时deactivateRestrictions()会逐项置nil并调用store.clearAllSettings()清理全部规则。五、第三步DeviceActivity 实现到点自动封锁手动开始/停止太简单了真正体现技术含量的是无人值守的定时封锁。Foqos 使用 FamilyControls 的DeviceActivityCenterDeviceActivityCenterUtil.swift 负责向系统注册DeviceActivitySchedule开始/结束时间、是否重复例如每日 21:00–23:00 自动封锁系统在对应时间点唤醒DeviceActivity 扩展回调intervalDidStart→ 调用activateRestrictions()写入屏蔽规则时间窗口结束触发intervalDidEnd→ 调用deactivateRestrictions()解除封锁。由于由系统进程而非 App 本身驱动即使 Foqos 被杀进程、甚至设备重启计时封锁依然生效——这是纯 Timer 方案做不到的。类似的机制还被复用在临时放行Soft Unblock到期收回SoftUnblockGrantScheduler.swift 为每次放行 N 分钟单独注册一个计时活动到期自动收回权限暂停计时器、休息时段、策略倒计时等多类计时场景统一定义在 Timers/ 目录。六、第四步定制 Shield 界面与软解锁按钮当用户点击被封锁的 App 时系统会弹出 Shield 界面。Foqos 用两个扩展把它做成了产品亮点1. 外观定制—— ShieldConfigurationExtension.swift位于FoqosShieldConfig/继承ShieldConfigurationDataSource为每个被封锁的 App/网站返回自定义ShieldConfiguration支持用户主题色背景、Emoji 图标以及按日期 App 名稳定随机挑选的 17 条趣味劝返文案如Brain check你真的是想用这个 App还是无意识点了。2. 临时放行按钮—— ShieldActionExtension.swift位于FoqosShieldAction/继承ShieldActionDelegate拦截用户在 Shield 上的主按钮点击.primaryButtonPressed校验剩余放行额度后创建一条SoftUnblockGrant含过期时间并通过 DeviceActivity 注册到期自动收回——实现允许打开 5 分钟之后自动重新封锁的Soft Unblock策略且整个流程无需打开 Foqos 主 App。七、策略模式12 种启动/停止方式如何统一Foqos 把怎么开始、怎么结束抽象为策略模式核心协议见 BlockingStrategy.swift每个策略声明usesNFC、usesQRCode、hasTimer等能力位UI 由策略自行返回StrategyManager.swift 注册了 12 个策略实现手动、NFC 碰一下、二维码、NFC计时器、暂停计时器、NFC/QR 软解锁等统一入口startBlocking/stopBlocking分发到具体策略最终都收敛到AppBlockerUtil的激活/解除方法。NFC 与 Shortcuts 集成是它的特色玩法App 内可直接向 NTAG213 标签写入 Profile 深链接https://foqos.app/profile/UUID碰一下就切换封锁状态也可以配合 iOS Shortcuts 的 NFC 自动化开启 Run Immediately实现贴标签 启动专注。仓库还提供了 25mm 标签的 3D 打印 NFC 砖块/钥匙扣设计八、如何获取与开发 Foqos使用直接从 App Store 下载 Foqos授予 Screen Time 权限创建 Profile选择 App/网站 策略即可开始封锁。数据全部存于本机 SwiftData无账号、无广告、无订阅。本地开发git clone https://gitcode.com/gh_mirrors/fo/foqos cd foqos make build # 构建项目 make lint # Swift 格式检查开发环境要求 Xcode 15、iOS 17.6 SDK以及具备 Screen Time / NFC entitlements 的 Apple Developer 账户。想深入阅读源码建议按这个顺序AppBlockerUtil.swift → DeviceActivityMonitorExtension.swift → ShieldConfigurationExtension.swift → StrategyManager.swift。九、总结回顾 Foqos 的技术路线iOS 应用封锁器的实现骨架其实非常清晰FamilyControlsAuthorizationCenter拿授权DeviceActivityCenter管什么时候封锁ManagedSettingsManagedSettingsStore写屏蔽规则两个 Shield 扩展管封锁时用户体验App 层用策略模式封装 12 种 NFC/二维码/计时器/手动触发方式统一调用上述两套 API。想给自己的 App 加专注模式能力、或实现类似 Brick 的物理触发封锁Foqos 的 MIT 开源代码见 LICENSE正是一份现成的最佳实践教材。赞分享【免费下载链接】foqosFoqos allows you to lock apps behind the tap of a NFC tag or scan of a QR code. Free and open source alternative to Brick, Opal, ScreenZen, Unpluq, Scrolly, Blok and more!项目地址https://gitcode.com/gh_mirrors/fo/foqos点击查看免费下载相关推荐为什么值得从Brick换到Foqos免费开源NFC应用封锁器的完整对比指南为什么值得从Brick换到Foqos免费开源NFC应用封锁器的完整对比指南 Foqos 是一款 免费开源的 iPhone 应用封锁器 让你用一张 NFC 标PrimeFaces与Spring Boot集成构建现代化Java Web应用的完整指南PrimeFaces与Spring Boot集成构建现代化Java Web应用的完整指南 PrimeFaces是一个功能强大的Jakarta FacesJSUI库/组件[技术突破]如何在iOS设备实现永久应用侧载TrollInstallerX全解析技术突破 如何在iOS设备实现永久应用侧载TrollInstallerX全解析 价值定位重新定义iOS应用侧载技术 在iOS生态系统中应用侧载长期面临签名移动开发网络安全创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/24 16:50:25

从 IPC 到 PDF 导出:Electron 跨平台 Markdown 编辑器开发实践

简介:DBeditor 是面向开发者、技术写作者与前端学习者的跨平台 Markdown 编辑器项目,强调在 Linux、macOS 与 Windows 上保持统一体验,并以简洁扁平、大量留白的界面减少菜单干扰。它适合想了解桌面端编辑器如何组织界面、路由与前端模块的读…

2026/10/24 16:50:25

RAID 5数据恢复图解:条带化、XOR校验与降级重建

简介:《RAID 5数据恢复图解》是一份面向存储运维人员、数据恢复初学者及服务器管理者的专题文档,围绕RAID 5的条带化分布、奇偶校验与故障重建展开,帮助读者理解阵列降级后如何借助XOR运算恢复数据。压缩包内仅含1个doc文件,大小约…

2026/10/24 16:50:25

OpenHarmony X86引导程序:固件到内核交接与启动排查

简介:面向X86架构计算机的OpenHarmony启动引导程序,适合需要在该平台部署、调试OpenHarmony系统的开发者与系统集成人员参考使用,重点解决引导加载、内核启动衔接及硬件适配等问题。压缩包共311个文件、约4.43MB,包含265个mod模块…

2026/10/24 17:50:40

6G网络架构设计实战:三层四面与四个网络单元详解

简介:这份PDF白皮书由中国电信研究院与中兴通讯于2023年联合发布,面向通信网络研究者、架构师及高校师生,系统探讨6G网络的设计理念、总体架构与创新特征,为理解下一代通信网络提供前瞻性参考。资源包内仅含1个PDF文件&#xff0c…

2026/10/24 17:50:40

为Claude装上记忆外挂:claude-mem解决跨会话失忆问题

如果你跟我一样,把 Claude 当成日常编码和学习搭子,八成碰过这种场面:上周刚跟它敲定的一整套项目约定,这周重新开会话,它跟失忆了一样,连我常用的包管理方式都得重新确认。这不是 Claude 本身不行&#xf…

2026/10/24 17:50:40

Text-to-CAD全解析:从自然语言到CAD模型的生成流程

1. 项目概述1.1 从一句中文描述到可用CAD模型的完整链路"text-to-cad",字面意思就是把文字描述变成CAD模型。你输入一句"一个直径30毫米、高度50毫米的圆柱体,顶部带一个边倒角",系统在几十秒内就能生成对应的三维模型文…

2026/10/24 17:50:40

给 LLM 装上外挂大脑:会话记忆系统的设计与实现

生成一份超过5000字的高质量技术博文,结构合理且不含AI套路表达。下面开始直接输出正文。1. 项目源起:为什么要做一套会话记忆系统最近在调试一个基于大型语言模型的工具型项目,碰到一个特别疼的问题:模型能力强是强,但…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑