You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在iOS Family Controls中仅允许用户选定的应用及分类?

解决方案:实现仅允许指定应用与分类的屏蔽策略

要实现仅允许用户选定的应用和分类,屏蔽其余所有内容,你需要分别处理应用和分类的屏蔽规则,结合applicationPolicy和applicationCategories的自定义配置来实现。以下是具体步骤和代码:

1. 存储用户选定的分类

首先需要在用户选择分类后,将选定的ActivityCategory集合保存到UserDefaults(和你存储应用令牌的逻辑一致):

// 示例:保存用户选定的分类
let selectedCategories: Set<ActivityCategory> = [.socialNetworking, .games] // 替换为用户实际选择的分类
let encoder = JSONEncoder()
if let categoryData = try? encoder.encode(selectedCategories) {
    UserDefaults.standard.set(categoryData, forKey: "SelectedCategories")
}

2. 读取配置并设置屏蔽规则

修改你现有的屏蔽逻辑,同时读取应用令牌和分类列表,分别配置应用和分类的屏蔽策略:

let store = ManagedSettingsStore()

// 读取选定的应用令牌
var allowedApps: Set<ApplicationToken> = []
if let appData = UserDefaults.standard.object(forKey: "SelectedAppTokens") as? Data {
    let decoder = JSONDecoder()
    if let tokens = try? decoder.decode(Set<ApplicationToken>.self, from: appData) {
        allowedApps = tokens
    }
}

// 读取选定的分类
var allowedCategories: Set<ActivityCategory> = []
if let categoryData = UserDefaults.standard.object(forKey: "SelectedCategories") as? Data {
    let decoder = JSONDecoder()
    if let categories = try? decoder.decode(Set<ActivityCategory>.self, from: categoryData) {
        allowedCategories = categories
    }
}

// 配置应用屏蔽:屏蔽所有应用,除了用户选定的
store.shield.applicationPolicy = .all(except: allowedApps)

// 配置分类屏蔽:仅允许选定的分类下的所有应用
store.shield.applicationCategories = .custom(
    includedCategories: allowedCategories,
    excludedCategories: []
)

关键逻辑说明

  • applicationPolicy = .all(except: allowedApps):设置默认屏蔽所有应用,仅放行用户单独选定的应用。
  • applicationCategories = .custom(includedCategories: allowedCategories, excludedCategories: []):设置仅放行指定分类下的所有应用,排除列表为空表示不额外排除该分类下的应用。
  • 两者组合后,最终允许的内容是「用户选定的单个应用」 + 「选定分类下的所有应用」,其余所有应用都会被屏蔽。

注意事项

  • 确保ActivityCategory的编码/解码正常:ActivityCategory遵循Codable,可以直接用JSONEncoder/JSONDecoder处理。
  • 如果用户没有选定任何应用或分类,会屏蔽所有内容,可根据需求添加默认规则(比如允许系统基础应用)。

内容的提问来源于stack exchange,提问作者songyiYu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 12:05:15