屏幕时间
屏幕时间让父母能够决定孩子在已接入的应用上可以使用多久、以及可以在什么时间使用。规则保存在 k-ID 中,而不是在每个应用里各自实现,因此父母只需为您的产品设置一次上学日的限制,它就会应用于孩子对该产品的使用。使用时间按孩子、按天统计,而不是按会话统计,因此关闭应用后再打开不会重置当天的总量。
您的产品需要做两件事:报告玩家正在使用它,以及遵循 k-ID 返回的判定结果。保存规则、统计使用时间、计算安排以及告知当前的判定结果,都由 k-ID 完成。
父母可以设置的内容
父母在 Family Connect 中为孩子配置屏幕时间。一份安排包含三类规则,任何一类都可以不设置:
- 每日限制:按星期设置的分钟上限。没有条目的日期没有限制;设置为
0分钟的日期完全不允许使用。父母可以借此在上学日给两小时、在周末给三小时。 - 安静时段:带名称的时间段,包含开始时间、结束时间以及适用的日期,例如工作日
21:00至07:00的就寝时间。安静时段是日历而不是预算:无论当天已使用多少时间,它们都会在这些时刻生效。 - 休息提醒:一个间隔,连续处于同一会话中的孩子在超过该间隔后会收到休息提示。
每份安排都带有时区。时刻、星期以及每日重置都按该时区计算,因此限制会在当地时间的午夜重置,而不是在 UTC 午夜。
使用时间如何统计
每日计数器关联的是孩子和产品,而不是会话:每个产品、每个孩子、每个当地日期对应一个计数器。正因如此,一天之内多次中断再继续,限制依然有效;玩家关闭应用后再打开,当天的总量也不会丢失。
要做到这一点,玩家需要解析到您已经持有的那个会话。请保存会话中的 kuid 并重复使用它,而不是为每台设备打开一个新会话。请参阅会话。
职责边界
k-ID 跟踪使用时间、计算安排并报告判定结果。限制在您产品中的具体形态由您的产品决定。
k-ID 从不屏蔽玩家、结束会话、将任何人登出,也不规定您的界面。达到限制时,k-ID 会告知限制已经达到以及何时解除。这意味着全屏拦截、只读模式、保存检查点还是温和的提示,是产品决策,且由您做出。
内容完全不在屏幕时间的范围内。屏幕时间关注的是多久和何时,而不是做什么。
在达到限制之前预警
在活动进行中被突然中断的孩子会丢失进度,也学不到任何东西。因此屏幕时间中的每项限制都有一个在它生效之前到达的信号:
| 之前 | 生效时 |
|---|---|
剩余 15 分钟和 5 分钟时的 Screentime.LimitWarning | 每日限制生效时的 Screentime.LimitReached |
时段开始前 15 分钟的 Screentime.QuietHoursWarning | 时段开始时的 Screentime.QuietHoursReached |
请把每一对当作一个行为来处理。警告是您告知玩家、并让他们有机会到达存档点的时机。第二个事件是规则生效的时机。只处理第二个事件在技术上满足了 API,却破坏了这项设计。
警告在玩家仍处于会话中时发出,而这只有在您的产品实时报告会话边界时才可能实现。这一点如何影响您选择哪种数据上报方式,请参阅报告使用时间。
向父母申请更多时间
遇到限制的孩子可以提出申请,而不是无从选择。您的产品通过 /screentime/request-override 提交申请,k-ID 通知父母,父母在 Family Connect 中批准或拒绝。
结果会作为 Screentime.OverrideResult 到达,状态为 granted、denied 或 expired。父母始终未作答的请求会在 24 小时后到期,这是正常结果而非失败。批准会提高当天的限制,但不会移除或更改安排。
屏幕时间与活动
屏幕时间是对使用时间的计数,而使用时间是产品向 k-ID 报告的活动之一。结束一个进行中的屏幕时间会话会把该时长记录为活动,因此它也会体现在父母在 Family Connect 中看到的使用情况中。这两项功能的配置与集成是分开进行的。
后续步骤
- 屏幕时间集成指南:端点、会话状态机以及事件处理
- Webhook 事件类型:每个屏幕时间事件的负载
GET /screentime/get-state:会话当前的规则与判定结果