# PFollow开源

> 原文：https://pjhubs.com/2018/11/04/PFollow%E5%BC%80%E6%BA%90/
>
> 作者：PJHubs · 发布于 2018-11-04 · 标签：iOS、PFollow、开源

# PFollow
<img src="https://i.loli.net/2018/11/04/5bddca958ebca.png" width = "100%" height = "100%" align=center />

## 简介
PFollow 为今年暑假新开的项目，期末考试完后和女票一同去了重庆青海西安十日游。在游玩的过程中，使用众多 app 协助旅行，在青海时，会经常到查看 iOS 自带的“指南针” app 看当前海拔。同时也因为在高原的天气变化多端，会非常注意第二天的天气等等这些习惯就被强制性的养成了。

旅行结束后，躺在宿舍床上慢慢回想这旅行的这段时间，很多回忆都留在了一张张照片上，虽然照片会带上当时拍摄时的一些地点及其它信息，相册也会自动识别并对照片进行归类，甚至还能自动归档生成一段回忆视频。

但是我总觉得还是不能很好的回忆起当时旅行中的一些美好的细节，因为往往会因为时间或者地点的因素被覆盖掉，却会在故地重游时再现。当时我脑海里就在想，如果我能够把游客此时所在地点配上文字和图片，形成一个个的“点”打在地图上，日后回想起这段旅程时，就可以顺着地图上的“点”，回忆起当初在这里发生的一些事情，这该是一件多么有趣的事情啊！

遂开干！

## 调研
我明确知道这种需求是一定被玩烂了的，就开始去 app store 中搜了一遍旅行类、记录类的 app，甚至也把知乎上关于“旅行记录/打卡”的相关问题都过了一遍，发现确实已经有产品在解决这些问题，总结出了以下几点：

* 体验不佳；
* 太丑；
* 广告太多；
* 忘了初心（名义上是旅行打卡，实质则为其它，例如：推销旅游产品）
* 过于复杂；
* 旅行打卡不是主要业务，入口太深

以上几点当然是都经过考虑的，有可能是因为单纯做“旅行打卡”工具类 app 难以存活；玩不出新花样；用户变现等等问题导致产品的方向发生了变化，都能理解。

但是，既然各个开发商都不愿意做这赔本事情，那为了满足个人需要就自己开干。

## 设计
在设计阶段花的时间不多，大概只用了前前后后合计不到四五天的时间就搞定了 1.0 的设计，因为其实自己在大一的时候就萌生出了做类似的旅游产品，很多地方可以直接用之前的设计和逻辑。

基本上把 app store 中“旅游”、“旅游打卡”、“旅行记录”等关键词下的 app 都使用并思考过了至少一遍，也结合了自己的使用习惯，使用 Sketch 设计出了一套符合个人习惯的 UI 。

但是非常遗憾，辛辛苦苦在咖啡厅调了一天，然后重装了一次系统偏偏就是忘了备份它！！！导致代码写到后边出的成果有些地方比较“怪异”。

## 实施
梳理了一遍 PFollow 中需要用到的知识，如下所示：

* 自定义地图（高德、百度、MapKit）
* GPS
* 陀螺仪
* 海拔
* UI Dynamic
* SpriteKit
* CloudKit
* CoreData
* 数据库设计
* UIKit
* Tapic Engine
* 读取相册
* 相机
* 其它

在这个项目中我对“自定义地图”、“UI Dynamic”、“Core Data”没有十足的把握，衡量了一下，可以不用停下目前正在做的事情把精力全部投入进行学习，因为我有个习惯，如果发现准备要做的事情超出了自己目前的知识储备，就会 all in 到学习这个事情中去，弄懂后再开始。

到最后我发现其实坑还是在 “Core Data” 这块，因为它跟我以往用过的、打着相同口号的 ORM 框架有很多不一样的地方，所以不光是思维的转换上需要斟酌斟酌，还有写法上也不太一样，需要熟悉一段时间。

不过好在到现在已经对 “Core Data” 有了一定的了解，并且也把习得的知识用在了实习公司的产品中，替换了大部分数据缓存策略。

## 展示
![IMG_0305.jpg](https://i.loli.net/2018/11/03/5bddc2dc527a3.jpg)

### 地图
<img src="https://i.loli.net/2018/11/03/5bddc386d5b5b.jpeg" width = "60%" height = "100%" align=center />

### 缩放地图
<img src="https://i.loli.net/2018/11/03/5bddc3ed51180.jpeg" width = "60%" height = "100%" align=center />

### 放大地图
<img src="https://i.loli.net/2018/11/03/5bddc51b90b39.jpeg" width = "60%" height = "100%" align=center />

### 聚点详情
<img src="https://i.loli.net/2018/11/03/5bddc46669b93.jpeg" width = "60%" height = "100%" align=center />

### 聚点瓶
<img src="https://i.loli.net/2018/11/03/5bddc4ba818d3.jpeg" width = "60%" height = "100%" align=center />


## 上线计划
目前 PFollow 暂无上线计划，因为我在前段时间的一篇文章中了解到 Instagram 居然就是做“地点签到”起家的，后来因为各种原因而改变了产品方向，在当时我瞬间就明白了，Ins 一定是遇到了某些问题，这些问题会在 PFollow 上线后随着时间的流逝而暴露出来，我坚信！

因此，PFollow 我将会以开源项目的方式进行下去。

## 思考
在开发 PFollow 的过程中带给我最多的思考还是如何把自己的想法转换成实际一行行的代码，这其中会有许多的妥协和坚持，我们最终坚持下来的东西很有可能就是我们当时内心深处最真实的想法，妥协掉一些累赘。

当然 1.0 版本还有些许缺陷，很大一部分原因是因为开学了我要有其它的事情去做了，PFollow 算是在这个炎热的暑假中让我静心学习的好助手，让我重新调整了自己的状态迎接大学最后一年。

## 项目地址
GitHub：https://github.com/windstormeye/PFollow
