跑者无疆开发日记

This is what have been the development notes for runner limitless.

a sports app designed to make everyday running competitive. But there was difficulty in backend design so it was halted.

这个APP背后的逻辑是,在部分常用的跑步路线上建立竞赛机制,用户可以通过手机实时或者非实时的和其他在同一条路线上跑步的用户进行比赛,还可以通过“投币”进入奖金池,获得头名的用户将会的得到这个奖金池。

这样提高了跑步的趣味性和社交性,同时利用了人们对竞技性、不确定性的追求。 让整个过程变得更刺激、更有趣、让跑步更有吸引力。还可以引入观战系统来增加参与度。将虚拟世界带到现实世界。

Day 1

  1. BMKMapView 添加定位点,实时绘制路径,跑后/跑中绘制路径。
  2. 完善发现页面结构。
  3. 完善个人页面结构。
  4. 挑战页面结构。
  5. 支付功能,用于下注,新增围绕跑赌的model。

已完成:
初步建立新建赛道页按钮系统,初步完成跑步model
未完的:
需要用autolayout重新布局页面,增加显示配速、卡路里和时间的标签。
Model还有功能bug, 开始-暂停后会显示负数时间,时间显示格式不对。


Day 2-4

nothing written


Day 5

完成了倒计时和时间计算,和后台更新位置。

待完成:
取消暂停按钮,重新布局。
路线绘制功能完成。
显示GPS定位图层。


Day 6-8

nothing written


Day 9

已完成:
分离mapview为新建赛道vc的子vc。 分离delegate方法等。
路线绘制完成待测试。
配速标签更新完成

待完成:
卡路里标签更新;
添加跑步距离标签
添加跑后逻辑(路线保存本地 + 上传服务区)
添加跑后vc

升级计划:
添加GPS信号强弱展示;
添加定位朝向,自定义定位图标


Day 11

思路变更:不再使用微信支付作为下注方式,改为虚拟货币,虚拟货币使用IAP购买。
虚拟货币可以换取实物礼品。


Day 12

编译错误解决:
Build Cycle inside ….
已经自定义data model时,将xcdatamodeld中的entity的codegen属性设置为Manual/None,


Day 13

取消服务器端。
挑战赛道改为个人赛道。从以前存储的信息中读取。

信息页面展示:
个人最好成绩
赛道最好成绩
进步图表
训练建议等…

发现页面:
信息流:跑步相关的公众号文章。

已完成:
图标设计、扫二维码图标设计。
新建赛道完赛信息展示设计。

待完成:
TAB bar图标设计: 发现、跑、个人中心
挑战赛道VC设计。

建立播客站。
神坑:CoreData 自动生成model codegen:class definition 编译报错,symbols not found。浪费一个下午!shit


Day 14

已完成:
路线绘制和距离计算bug修复。
coredata路线展示完成。

待完成:
个人页面数据展示。
UI美化。

新建entity 赛道。
新建赛道页面添加输入赛道名称,检测重复性。


Day 16

数据页面规划:

自定义collectionview类,卡片式效果,
带header。

免费数据卡片:当天步数,当天公里数。
付费卡片:历史公里数分析,
赛道数据分析,
配速分析。
卡路里分析。

View层:
UICollectionView,UICollectionViewCell, UICollectionViewHeader,
BackgroundView。绘图模型

View-Model层:

Model层:
数据分析Manager: 提取CoreData中的数据,组成可展示的array 用于绘图层。


已完成:

数据展示卡片框架完成。

待完成:

Lane逻辑:
保存Run代码转到跑后成绩展示页。
输入Lane名称才能提交。

挑战赛道更新:
按照Lane排序
点击后会自动进跑步界面
(左上推出标签条:展示当前挑战的路线名称)
丰富卡片数据
点击后横屏展示详细图标。

动画丰富。


Day 22

待完成:
打开页面后做单次定位(vieWillAppear),
加入引导页和自制音乐(南美风情)
挑战赛道页面改为 赛道主导显示,点击后直接进入新建赛道。
数据页面完善。


Day 23

开发中的问题:
使用SafeAreaInsets时必须在viewWillAppear之后,在view显示之前SafeAreaInsets为零。

待完成:
绘制图标的功能:
按天绘制三个月以内的每天跑步公里数

    按路线绘制成绩。

提交应用商店

待完善功能:
数据页面展示 前几天 跑步公里数,消耗卡路里。
结束跑步后跑步开始按钮不显示
跑步页面展示公里数。 调整布局
。。。。展示路线名称,bug修复。


Day30

  1. BUG修复
    UIVIew transitionFrom: 导致startRunning按钮移除视图链。
    修复方法: 改用 UIView transitionWith: 或不用动画(有倒数页面动画已不可见)

Day31

bug描述: 新建赛道VC出现时 地图组件出现移动

bug修复:在VIEWWillappear中 safeareaLayout 改变会造成控件位置变化。和不必要的视图动画。

将mapcontro updateUI 移动到 viewDidLayoutSubviews

感悟: 不要再viewwillappear中修改空间的位置。

待完成:

  • 一个通用Formatter显示正确的单位和数值
  • 路线名称显示有bug, core data 保存有误
  • 挑战赛道 布局更改: section标签为路线名, cell 为跑步记录
  • cell展示卡路里消耗
  • 过滤定位漂移 (通过 速度 or ? )

Day 39

修复bug:
跑步距离格式bug, 增加历史记录

待完成:
路线名称一直显示中江路??
跑步路径显示不全,没有更新地图显示层级
过滤漂移数据
跑步结束再返回时会出现开始跑步不计时的bug(缺少timeNode)
加入GameCenter功能

FetchedResultsTableViewController 重用方法:
* fetchedResultsController逻辑在父类
* 父类提供接口 根据不同的Entity和SortDescriptor初始化fetchedRequest 以提供不同Model的数据
* 子类在viewDidLoad中调用父类接口 来实现不同的FetchedResultsTableViewController实现


后续升级计划

需要一个UI设计师

提升Logo 、 UI、 以及App store页面介绍的B格
UI设计思路:

扁平风格?
3D风格?

主界面风格 ?
色调? 冷? 暖?
风格?

使用Firebase作为数据上传和比对

Facebook应用内事件监控
投放广告?

功能方面

需要加入后端 支付进行资金池竞跑的核心功能 + 1-3个外围辅助功能(微型bbs- 类蚂蚁森林社交属性、 数据可视化功能-超级酷炫图标等配合真实图片)

目前aso 是比较有潜力
主要表现在各类跑步APP竞争关系尚不明确 市场支配地位前三(咕咚-智能硬件路线、 Keep-知识付费路线、 悦跑圈-社交+商城路线)
跑步APP市场处于蓝海状态 依赖于LBS服务 可以成为下一个美团