Skip to content

wersling/iTime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iTime - 时间记录应用

一个简洁优雅的iOS时间记录应用,帮助你追踪每天的时间使用情况。

功能特性

时间记录

  • 按类别组织事件(工作、学习、娱乐、运动、休息等)
  • 自定义事件名称和颜色
  • 一键开始/停止/切换事件计时
  • 自动过滤短时间记录(可设置最小有效时长)
  • 事件归档 - 暂时不用的事件可归档,需要时在设置中恢复

统计分析

  • 多维度时间统计(日/周/月/年)
  • 可视化图表展示时长分布
  • 事件分类统计和百分比分析
  • 详细记录列表查看

智能提醒

  • 单次事件超过1小时自动提醒
  • 后台本地通知支持
  • 每小时重复提醒

日历同步

  • 自动同步有效记录到iOS日历
  • 支持选择目标日历
  • 完整的权限管理

数据同步与安全

  • iCloud 自动同步 - 所有数据实时同步到 iCloud
  • 多设备共享 - 支持 iPhone、iPad 数据同步
  • 数据持久化 - 删除应用不会删除数据
  • 自动恢复 - 重新安装后自动从 iCloud 恢复
  • 隐私保护 - 数据仅存储在您的 iCloud 账户中

技术架构

核心技术栈

  • iOS 16+
  • SwiftUI - 现代化UI框架
  • SwiftData - 数据持久化
  • Charts - 原生图表展示
  • EventKit - 日历集成
  • UserNotifications - 本地通知

项目结构

iTime/
├── Models/              # 数据模型层
│   ├── EventCategory.swift    # 事件分类
│   ├── EventType.swift         # 事件类型
│   └── TimeRecord.swift        # 时间记录
├── ViewModels/          # 业务逻辑层
│   ├── TimerViewModel.swift
│   ├── StatisticsViewModel.swift
│   └── SettingsViewModel.swift
├── Views/               # 视图层
│   ├── MainTabView.swift
│   ├── Timer/           # 计时器模块
│   ├── Statistics/      # 统计模块
│   └── Settings/        # 设置模块
├── Services/            # 服务层
│   ├── CalendarService.swift
│   ├── NotificationService.swift
│   └── TimerService.swift
└── Utils/               # 工具类
    ├── Extensions.swift
    └── Constants.swift

数据模型

EventCategory(事件分类)

  • 预设6大分类:工作、学习、娱乐、运动、休息、其他
  • 自定义颜色和图标
  • 级联删除关联事件类型

EventType(事件类型)

  • 用户自定义事件名称
  • 可选的自定义颜色
  • 关联到分类
  • 归档状态(isArchived)

TimeRecord(时间记录)

  • 记录开始/结束时间
  • 计算持续时长
  • 有效性标记
  • 日历事件ID关联

使用说明

首次使用

  1. 权限设置

    • 进入"设置"标签
    • 授予通知权限(接收提醒)
    • 授予日历权限(同步记录)
    • 选择目标日历
  2. 创建事件

    • 在"时间"标签点击添加按钮
    • 输入事件名称
    • 选择分类
    • 可选择自定义颜色

记录时间

  1. 点击事件卡片开始计时
  2. 当前活动事件会高亮显示
  3. 点击其他事件可切换
  4. 再次点击当前事件或点击停止按钮结束计时

查看统计

  1. 进入"统计"标签
  2. 选择时间段(日/周/月/年)
  3. 查看图表和分类统计
  4. 点击"查看详细记录"查看所有记录

管理事件

编辑事件

  1. 长按事件卡片,选择"编辑"
  2. 可修改事件名称、所属分类、自定义颜色
  3. 修改后立即生效,历史记录自动关联新属性
  4. 正在计时的事件也可以编辑

归档事件

  1. 长按事件卡片,选择"归档"
  2. 归档的事件不会在主界面显示
  3. 历史记录仍然保留

恢复归档事件

  1. 进入"设置"标签
  2. 点击"归档事件"
  3. 点击恢复按钮即可恢复到主界面
  4. 也可以直接删除不再需要的归档事件

配置说明

最小有效时长

默认为5分钟,可在设置中调整(1-60分钟)。少于此时长的记录不会被保存。

日历同步

  • 启用后,所有有效记录会自动同步到选中的日历
  • 可选择"默认日历"或特定日历
  • 同步的事件标题为事件类型名称

通知提醒

  • 单次事件超过1小时后首次提醒
  • 之后每小时提醒一次
  • 需要授予通知权限

开发说明

环境要求

  • Xcode 15+
  • iOS 16+ 模拟器或真机
  • Apple Developer账号(用于真机测试和iCloud)

运行项目

  1. 克隆项目到本地
  2. 使用Xcode打开 iTime.xcodeproj
  3. 选择目标设备
  4. 点击运行

iCloud配置

项目已配置CloudKit支持,需要:

  1. 在Xcode中登录Apple ID
  2. 配置Bundle Identifier
  3. 启用iCloud能力
  4. 选择或创建CloudKit容器

代码规范

  • 使用4空格缩进
  • 关键逻辑添加中文注释
  • MVVM架构模式
  • 单一职责原则
  • 避免过度抽象

数据安全说明

iCloud 备份机制

本应用使用 Apple 的 SwiftData + CloudKit 技术栈,确保您的数据安全可靠:

数据存储位置

  • 所有时间记录存储在您的 iCloud 账户中
  • 使用 Apple 提供的加密存储
  • 数据仅限您登录的设备访问

删除应用后的数据保护

  1. 应用数据不会丢失 - 删除应用只会移除应用本身,iCloud 中的数据完整保留
  2. 重新安装自动恢复 - 重新安装应用后,登录同一 iCloud 账户即可自动恢复所有数据
  3. 多设备同步 - 在其他设备(iPad/iPhone)安装应用,数据自动同步

如何确保数据安全

设置 → Apple ID → iCloud → iCloud Drive → 打开

确保以下设置已开启:

  • ✅ 已登录 Apple ID
  • ✅ iCloud Drive 已启用
  • ✅ 有足够的 iCloud 储存空间
  • ✅ 网络连接正常(用于初次同步)

数据恢复步骤

  1. 卸载应用(数据保留在 iCloud)
  2. 重新从 App Store 安装
  3. 使用相同 Apple ID 登录
  4. 打开应用,等待数据自动同步
  5. 所有历史记录完整恢复

注意事项

  • 首次同步可能需要几分钟,取决于数据量和网络速度
  • 确保设备有足够的网络流量(建议使用 WiFi)
  • 切换 Apple ID 会导致数据无法访问(数据仍在原账户中)

许可证

MIT License

作者

Sean Zou - 2025

About

一个简洁优雅的iOS时间记录应用,帮助你追踪每天的时间使用情况。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages