应用很早就上线了,欢迎大家下载使用:http://itunes.apple.com/app/id1206687109
源码已经公开,大家可以去https://github.com/Inspirelife96/ILDiligence下载。 喜欢的话Fork或者给个Star,非常感谢。
下面是这一系列的全部帖子:
想法和原型
勤之时 - 架构与工程组织结构
勤之时 - 数据持久层的实现
勤之时 - 网络层的实现
勤之时 - 业务逻辑层
勤之时 - Info.plist的改动
勤之时 - 表示层(一)
勤之时 - 表示层(二)
勤之时 - 表示层(三)
勤之时 - 表示层(四)
勤之时 - 表示层(五)
一直想做个番茄时钟的APP,但是没有特别好的想法。今天看了几个番茄APP,突然有点想仿的感觉。
潮汐的基本风格+Owaves圆盘图标+Flat Tomato的闹钟声音提醒。
开发计划安排一个月,2月底上线。
待续,明天写需求和原形。
单机版,以及考虑是不是需要出Mac版,以及联机同步版?
先来分析下潮汐这款APP,在Apple Store上评价很高,用过的人大都给了好评,理由多数是简单,易用,美观。
说说他的功能,简书上的派派呀派派呀同学写过一篇day2:Tide(潮汐)--一款可以让人专注的app,我觉得分析得很到位,所以我就不再重复了。这边借用他的一张图来说明产品框架:
具体的需求:
专注/休息页面 (也是主页)
- 进入【设置】页面
- 进入【日帖分享页面】
- 环形圈。专注时会呈现波浪状,并显示进度。
- 当前任务文字说明。 首页为问候语,依据时间来给出具体的问候。其他页面为具体的任务名字 (5个字以内?)休息时更改为具体的休息推荐的内容,例如喝杯水,站起来走走等。
- 仅首页出现,为具体的日期。
- Page Control, 7个Page,首页为问候语,其他页面为任务。6/7页面需要解锁。 (当完成一定的番茄后解锁)。
- 开始专注按钮。专注时切换为暂停,继续,放弃等按钮。休息时为现在休息。
- 每日励志文字
- 每日专注的状态,想修改为环形的图表,点击进入【统计】页面
- 背景图片,背景音乐。背景图片怎么每天动态的变化,是否可以让用户自行设定?
- 休息时的跳过按钮。
比较有意思的是他有一层蒙版似的东西。颜色会变,这个做的很Cool
【设置】页面:
删除设置Cell
新增加一个任务Cell。用户可以在这里添加,编辑自己设定的任务,以此可以专注某一个任务。用户可以追加多个,但最多可以激活7个任务。
系统默认的任务为:
- 工作
- 学习
- 冥想
- 运动
- 爱好
- 需要解锁,可以自定义
- 需要解锁,可以自定义
可以为每一个任务配置:
- 背景图片 (?)
- 背景音乐
- 任务颜色
- 专注设置
- 白噪音设置
【详细设置】页面
【统计】页面
这个想稍微修改一点,会变成一个多彩的环。根据任务和时间,这个环会添加上对应的专注的时间。
历史分析会显示更多的环。
除了最佳专注
还会提交任务,以及对应的专注数等。
【分享】页面
基本如此吧。二维码这个事情不是特别清楚。
架构上:
第一步:搞清楚要解决哪些问题,并找到解决这些问题的充要条件
需要解决哪些问题:
支持哪些平台?
暂时支持iphone,ipad。 Mac不支持,Mac另外设计,但将来应该会有。需不需要用户?以及不同设备间的同步?
暂时没有这个功能。但应该考虑将来扩展这个功能。背景图片如何更新?每日励志是否可以在线更新?
背景图片应该允许在线更新。同理,每日励志也是。
所以,应该也有一个对应的服务器,负责这些图片和励志内容的管理?
这些图片和内容如何cache到本地?用户的专注数据以什么方式进行存储?
以字典的方式存储在本地。是否可以尝试用 Core Data?
日期 - 专注内容
- 下标?
- 时间
- 任务
- 时长
- 打断次数
- 是否放弃?二维码是怎么回事?调查下 (Low Priority)
分享改如何做?
用sharedSDK。?通知?
本地通知?可以给任务设定通知提醒,开始专注?用户引导页面如何做?
如何变幻应用的皮肤?
要皮肤,看这个框架怎么做?自己写还是用第三方的?第三方的有哪些?背景音乐的控制?
核心的数据结构
- 任务
User
- id
- level
- ??
task
- id
- name
- createdAt
- updatedAt
- status (激活?未激活?完成?)
- Configuration
- 专注时间
- 主题
- 代表色
- 背景音乐
- 通知提醒
第二步:问题分类,分模块
第三步:搞清楚各问题之间的依赖关系,建立好模块交流规范并设计模块
第四步:推演预测一下未来可能的走向,必要时添加新的模块,记录更多的基础数据以备未来之需
第五步:先解决依赖关系中最基础的问题,实现基础模块,然后再用基础模块堆叠出整个架构
第六步:打点,跑单元测试,跑性能测试,根据数据去优化对应的地方