一个基于行为科学的戒烟数字疗法iOS应用,严格遵循DTx(数字疗法)合规要求。
一句话定义:
以可解释行为模型为核心、以AI辅助表达为手段,在吸烟冲动关键窗口提供克制与支持的数字疗法级戒烟系统。
- 实时状态卡片显示风险等级
- 主操作按钮:"我现在很想抽"触发即时干预
- 次级操作:"我刚刚抽了一支"记录吸烟
- 今日统计卡片和快速提示
- 倒计时进度环(3-10分钟可配置)
- AI生成的鼓励文案
- 替代行为选择(喝水/深呼吸/走动/转移注意力)
- 成功/失败记录机制
- 吸烟vs忍住趋势图表
- 核心指标卡片(本周少抽X支、成功忍住X次)
- 详细统计和成就徽章系统
- AI生成的行为模式识别
- 可解释的洞察卡片(时间模式、策略效果等)
- 自我反思辅助工具
- 合规设计:AI仅用于解释,不参与决策
- 总节省金额显示和等价换算
- 消费趋势图表
- 机会成本分析(月度/年度/五年节省)
- 替代目标进度追踪
- 中性提示,非评判性语言
QuitSmokingDTx/
├── QuitSmokingDTxApp/
│ ├── App/
│ │ ├── QuitSmokingDTxApp.swift # 应用入口
│ │ └── AppState.swift # 全局状态管理
│ ├── Views/
│ │ ├── ContentView.swift # 主TabView
│ │ └── Screens/ # 四大核心页面
│ ├── Services/
│ │ ├── DataStorageService.swift # 数据持久化
│ │ └── NotificationService.swift # 通知服务
│ ├── Resources/
│ │ ├── Info.plist
│ │ ├── PrivacyInfo.xcprivacy # 隐私清单
│ │ └── QuitSmokingDTx.entitlements
│ ├── Models/ # 数据模型
│ └── Utilities/ # 工具类
├── Package.swift # Swift Package配置
└── project.yml # XcodeGen配置(可选)
- SwiftUI:现代声明式UI框架
- @Observable:Swift 6.0状态管理
- Charts:数据可视化
- UserNotifications:本地通知系统
- UserDefaults:本地数据存储
- ✅ 允许:文案表达、洞察解释、反思辅助
- ❌ 禁止:行为判断、干预决策、个性化说服
- 🔒 隔离设计:LLM服务与决策引擎物理隔离
- 🔐 本地优先的数据存储
- 🗑️ 用户可随时删除或匿名化数据
- 📋 完整隐私清单配置
- 🚫 无第三方数据共享
- 打开Xcode
- 选择"File" → "New" → "Project"
- 选择"iOS" → "App"
- 配置项目信息:
- Product Name:
QuitSmokingDTx - Interface:
SwiftUI - Language:
Swift - Storage:
None(使用内置的DataStorageService)
- Product Name:
- 将
QuitSmokingDTxApp目录中的所有文件复制到新项目中 - 添加必要的权限:
- 在
Info.plist中添加通知权限描述 - 在Signing & Capabilities中添加Push Notifications
- 在
-
安装XcodeGen:
brew install xcodegen
-
运行生成命令:
cd QuitSmokingDTx xcodegen generate -
打开生成的
QuitSmokingDTx.xcodeproj
-
将
QuitSmokingDTx作为依赖添加到你的项目中:// Package.swift dependencies: [ .package(url: "https://gandli/QuitSmokingDTx.git", from: "1.0.0") ]
-
在目标中添加依赖:
targets: [ .target( name: "YourApp", dependencies: ["QuitSmokingDTx"] ) ]
- iOS: 18.0+
- Xcode: 16.0+
- Swift: 6.0+
在Info.plist中添加:
<key>NSUserNotificationUsageDescription</key>
<string>发送戒烟提醒和鼓励通知</string>在AppState.swift中修改:
// 默认吸烟习惯
var cigarettesPerDay: Int = 10
var cigarettePrice: Double = 5.0
// 通知设置
var notificationsEnabled = true
var highRiskNotificationsEnabled = true在InsightsScreen.swift中修改generateSampleInsights()方法,或集成真实的AI服务。
在EconomyScreen.swift中修改:
- 等价换算价格
- 替代目标金额
- 时间范围选项
项目包含可测试的组件:
DataStorageService:数据持久化测试NotificationService:通知逻辑测试AppState:状态管理测试
使用SwiftUI Preview功能测试各个屏幕:
#Preview {
HomeScreen()
.environment(AppState())
}- 社交支持:添加朋友支持和鼓励功能
- 医疗连接:在合规前提下连接医疗专业人员
- 多语言支持:添加本地化字符串
- 暗色模式:完善主题系统
- 创建
AIService.swift服务层 - 实现合规的API调用
- 添加AI输出日志和审计系统
- 确保用户可关闭AI功能
- Fork项目
- 创建功能分支
- 提交更改
- 推送到分支
- 创建Pull Request
本项目采用MIT许可证。详见LICENSE文件。
如有问题或建议,请:
- 查看Issues
- 提交新的Issue
- 或通过email联系维护者
- 基于行为科学和心理学原理
- 遵循数字疗法(DTx)最佳实践
- 感谢所有贡献者和测试用户
健康提示:本应用旨在辅助戒烟过程,不能替代专业医疗建议。如有健康问题,请咨询医生。