用途:RelevanceKit 提供设备端情境线索,让 watchOS 智能叠放(Smart Stack)在合适时机展示小组件。它按时间、位置、健身状态、睡眠计划或已连接硬件判断相关性。目标为 Swift 6.3 / watchOS 26+,处于 Beta 敏感阶段,使用前应重新核对 Apple 文档。
主要能力:watchOS 用两种机制判断相关性。一是时间线提供者相关性,在 AppIntentTimelineProvider 上实现 relevance(),把 RelevantContext 线索附加到时间线条目,跨平台可用但仅 watchOS 生效。二是相关小组件,用 RelevanceConfiguration 配合 RelevanceEntriesProvider 构建完全由相关性线索驱动的小组件,系统为每个相关条目创建独立卡片,仅 watchOS 26+。关键类型包括 RelevantContext、WidgetRelevance、WidgetRelevanceAttribute、WidgetRelevanceGroup、RelevanceConfiguration、RelevanceEntriesProvider、RelevanceEntry。
使用方式:导入 import RelevanceKit 与 import WidgetKit。时间线索用 RelevantContext.date(...),可带 DateKind(.default、.scheduled、.informational)或日期区间;位置线索用 .location(inferred: .home/.work/.school/.commute) 或 CLCircularRegion,26.0+ SDK 支持 .location(category:);健身用 .fitness(.workoutActive/.activityRingsIncomplete);睡眠用 .sleep(.bedtime/.wakeup);硬件用 .hardware(headphones: .connected)。可返回多个 WidgetRelevanceAttribute 组合信号,顺序即优先级。用 .associatedKind(_:) 避免与时间线小组件重复卡片,用 WidgetRelevanceGroup 控制分组。时间线路径还需调用 RelevantIntentManager.shared.updateRelevantIntents。
适用场景:需要在通勤、工作、日程事件、锻炼、睡前等情境下自动浮现的小组件。
限制:RelevantContext 虽跨平台声明(iOS 17+、watchOS 10+),但功能仅在 watchOS 生效;RelevanceConfiguration 等仅 watchOS 26+。位置线索需宿主 App 申请定位权限且小组件扩展声明 NSWidgetWantsLocation,并检查 CLLocationManager.isAuthorizedForWidgetUpdates;健身与睡眠线索需 HealthKit 对应读取权限;location(category:) 返回可选值,部分类别不支持。