Skip to content

Latest commit

 

History

History
83 lines (64 loc) · 4.28 KB

File metadata and controls

83 lines (64 loc) · 4.28 KB

MindSeed

每日正念与消息推送的 iOS 应用,使用 SwiftUI 构建。

功能

  • 消息 / 正念推送:支持添加「消息」与「正念」两类内容,通过本地通知推送。
  • 发送内容:在「消息」页添加要推送的文案,可随时增删。
  • 每天定时推送:在设定时间段内(默认 9:00–21:00)按规则推送,可配置每天次数。
  • 推送规则可选
    • 默认:随机推送:从你输入的内容中随机选一条,在设定时段内随机时间推送。
    • 自定义规则:可限制只推送「消息」或只推送「正念」,并设置时段与次数。
    • 定时单条推送:为某一条内容指定具体日期与时间,单独推送。
  • 定时单独推送:在「推送规则」里添加「定时单条推送」规则,选择一条内容并设置推送时间即可。

开发流程:Cursor 编辑 + Xcode 运行

  • 同一份项目:用 Cursor 打开项目目录改代码,用 Xcode 打开同目录下的 MindSeed.xcodeproj 编译运行,无需复制。
  • 详细步骤见 docs/开发流程-Cursor与Xcode.md(第一次打开、日常流程、常见问题)。

运行与发布

方式一:直接打开已有工程(推荐)

  1. 用 Xcode 打开项目根目录下的 MindSeed.xcodeproj
  2. 选择模拟器或真机,按 ⌘R 运行
  3. 在 Signing 中选择你的 Apple ID / Team

方式二:使用 XcodeGen 重新生成工程(可选)

  1. 安装 XcodeGenbrew install xcodegen
  2. 在项目根目录执行:xcodegen generate
  3. 用 Xcode 打开生成的 MindSeed.xcodeproj
  4. 在 Signing 中选择你的 Team,连接真机或模拟器运行

方式三:手动在 Xcode 中创建工程(无 .xcodeproj 时)

  1. 打开 Xcode,File → New → Project,选择 App,Interface 选 SwiftUI,Language 选 Swift
  2. 产品名填 MindSeed,Bundle ID 自定(如 com.yourname.MindSeed),保存到本仓库所在目录(不要勾选创建 Git 仓库)。
  3. 在项目导航中删除 Xcode 自动生成的 ContentView.swift 等占位文件(若存在)。
  4. 将本仓库中的 MindSeed 文件夹(包含 MindSeedApp.swiftContentView.swiftModelsViewsServicesInfo.plistAssets.xcassets)拖入工程,勾选 Copy items if needed 和你的 App Target。
  5. 避免 Info.plist 冲突:选中左侧 MindSeed target → 上方 Build Phases → 展开 Copy Bundle Resources,若列表中有 Info.plist,选中后点 - 删掉(只从该列表移除,不要删工程里的文件)。再在 Build Settings 里搜索 Info.plist,将 Info.plist File 设为 MindSeed/Info.plist
  6. 在 Target → Signing 中配置你的 Apple ID / Team,运行即可。

发布到 App Store

  1. 在 Xcode 中配置好 Bundle ID、版本号与图标(在 Assets.xcassets/AppIcon.appiconset 中放入 1024×1024 图标)。
  2. Product → Archive,在 Organizer 中 Distribute App,选择 App Store Connect 上传。
  3. 在 App Store Connect 中提交审核。

技术说明

  • 本地通知:使用 UserNotifications 框架,无需后端即可实现定时推送。
  • 数据持久化:消息与推送规则保存在 UserDefaults
  • 最低系统:iOS 16.0。

项目结构

MindSeed/
├── MindSeedApp.swift          # 应用入口
├── ContentView.swift          # 主 Tab
├── Info.plist
├── Assets.xcassets
├── Models/
│   ├── MessageItem.swift      # 消息/正念模型
│   ├── PushRule.swift         # 推送规则模型
│   └── ScheduleEntry.swift
├── Views/
│   ├── MessageListView.swift  # 消息列表与「发送」入口
│   ├── AddMessageView.swift
│   ├── PushRulesView.swift    # 推送规则列表
│   ├── AddPushRuleView.swift
│   ├── EditPushRuleView.swift
│   └── SchedulePreviewView.swift  # 定时推送与刷新排期
└── Services/
    ├── DataStore.swift        # 持久化
    ├── NotificationManager.swift  # 通知权限与调度
    └── PushScheduler.swift    # 按规则生成推送计划

License

LICENSE 文件。