iOS中是否存在查询当前专注模式名称的API?
获取Apple专注模式名称的API方案
- 适用系统版本:iOS 15+、macOS 12+、watchOS 8+、tvOS 15+
- 核心API调用:使用
UserNotifications框架中的UNUserNotificationCenter.getCurrentFocusModes(_:)方法,直接获取当前激活的专注模式列表,每个模式对象包含displayName(用户可见的名称)和identifier(唯一标识)。
代码示例
import UserNotifications // 请求通知权限(必须先完成这一步才能访问专注模式信息) UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in guard granted, error == nil else { // 权限未授予,无法获取专注模式信息 return } // 获取当前激活的专注模式 UNUserNotificationCenter.current().getCurrentFocusModes { activeModes, error in guard let modes = activeModes, error == nil else { // 处理错误逻辑 return } // 遍历激活的模式(通常只有一个处于激活状态) for mode in modes { let focusModeName = mode.displayName let focusModeID = mode.identifier // 这里拿到名称后就可以用来筛选任务了 print("当前激活的专注模式:\(focusModeName)") } } }
- 注意事项:
- 必须先请求通知权限,否则无法调用专注模式相关API;
- 如果用户同时激活多个专注模式(比如叠加模式),
activeModes会返回所有激活项,按需处理即可; - 系统默认的专注模式(如“工作”“个人”)和用户自定义的模式都能通过该API获取名称。
内容的提问来源于stack exchange,提问作者Kem Mason
相关产品推荐
相关产品推荐

