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

如何在Swift中通过Screen Time API获取应用使用时长?

能否通过Screen Time API获取应用使用时长?如何用Swift实现?

可以通过Apple的Screen Time API获取应用使用时长,该API从iOS 13开始提供,支持获取设备上各类应用的使用统计数据。以下是Swift中的实现步骤:

1. 配置项目权限

首先需要在Info.plist中添加权限描述,否则无法请求用户授权:

  • 添加键NSFamilyUsageDescription,值填写你的应用需要访问Screen Time数据的原因(例如:"需要统计应用使用时长以帮助你合理规划屏幕使用时间")

2. 请求Screen Time授权

在使用API前必须先请求用户授权,示例代码如下:

import ScreenTime

func requestScreenTimeAuthorization() {
    STAuthorizationCenter.shared.requestAuthorization { status in
        switch status {
        case .authorized:
            // 授权成功,可开始获取数据
            fetchAppUsageData()
        case .denied, .restricted:
            // 授权失败,提示用户开启权限
            print("Screen Time授权被拒绝或受限")
        @unknown default:
            print("未知授权状态")
        }
    }
}

3. 获取应用使用时长数据

授权成功后,可通过STUsageReport获取指定时间范围内的应用使用数据:

func fetchAppUsageData() {
    // 设置时间范围:例如过去24小时
    let endDate = Date()
    guard let startDate = Calendar.current.date(byAdding: .hour, value: -24, to: endDate) else {
        print("无法计算起始时间")
        return
    }
    
    let usageReport = STUsageReport(dateInterval: DateInterval(start: startDate, end: endDate))
    
    usageReport.fetchReports { reports, error in
        if let error = error {
            print("获取使用数据失败:\(error.localizedDescription)")
            return
        }
        
        // 遍历数据,提取应用包名和使用时长
        reports?.forEach { report in
            guard let bundleID = report.bundleIdentifier,
                  let usageTime = report.totalUsageTime else { return }
            
            // 将秒转换为更易读的格式(时:分:秒)
            let hours = Int(usageTime) / 3600
            let minutes = (Int(usageTime) % 3600) / 60
            let seconds = Int(usageTime) % 60
            print("应用:\(bundleID),使用时长:\(hours)h \(minutes)m \(seconds)s")
        }
    }
}

注意事项

  • 该API仅支持iOS 13及以上版本,需在项目部署目标中设置最低版本为iOS 13.0
  • 必须在真机上测试,模拟器可能无法正常获取Screen Time数据
  • 用户可以随时在系统设置中关闭Screen Time权限,需处理授权状态变化的情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:22:38