我的作品 我是怎么用 SwiftUI 开发出一款独立 App 的

zhishu520(阿树) · 2020年12月22日 · 最后由 zhishu520 回复于 2021年01月04日 · 259 次阅读
本帖已被管理员设置为精华贴

大家好,我是阿树。
两个月前,我还是一名游戏全职开发者,因为厌倦了 996 的强压工作,想试试做一名独立开发者。一晃已经两个月过去了,我的 App 已经上线了 app store。
我想写一点总结一下开发的整个过程,下面的是 app 下载链接
「早晨计划」app store 下载链接

1.  我要做一个什么样的 App

在一开始其实我已经有一些想法了,因为我经常工作完没事就开始玩游戏,对自己的生活未来没有规划,我不想时间如沙子一样从手中流逝,最后一无所获,同时我也需要有一款软件来帮助我在独立开发者这条孤独的路上前行,所以我想做出一款早晨利用早起一小时计划整天的工作,让自己有计划的生活,而不是随波逐流。

2. 技术栈的选择

确立了目标,第二步就需要做出技术栈的选择,首先独立 app 的话首选应该是 IOS,因为 IOS 的用户付费意愿比较高。我没有考虑安卓,因为安卓的机型比较复杂,跨平台开发的话,会消耗我大量的精力,在平台上。所以只考虑了 IOS,同时我选择了最新的 SwiftUI 来开发,因为看着比较顺眼,不喜欢手动拖拽拼界面,实际用下来感觉 SwiftUI 开发速度也很快! 用户的数据都存在本地的 sqlite 里,没有放后端,后端的话只用了 python 的 flask 做一些后端基础服务,比如说支付的验证。前后端的交互也会浪费大量开发时间,而且服务器也比较贵,所以就基本不依赖服务器。

3. 设计 App 的界面

说实话,我基本没怎么设计界面,就是按照感觉走的,朴素简洁风。比如说下面的目标界面,就是很朴素的 app store 的风格。我个人就是比较喜欢这种简单的美,让界面显得不多余。
目标界面:

任务界面:

4. 代码开发

1 尽量使用开源库,减少开发工作量 代码目前代码的开发占据了大部分的时间,本着能用开源库就用开源库的精神,减少工作量,收集了一些 swift 的库。

  • SQLite.swift 操作 sqlite3 的库,我的大部分用户数据都是用 sqlite 去存储的。
  • Alamofire 网络请求库,api 比较友好简单,易于使用
  • Toucan 图片处理库
  • FSCalendar 日历控件

2 使用简单的框架 有人说过这么一句话,调试的复杂度是代码复杂度的两倍,当你写出来的框架足够复杂的时候,可能你已经没有能力去调试其中的 bug 了。我只使用了简单的 MVC,MVC 的好处很多,有个最明显的好处就是降低耦合,减少重复代码的可能。

3 遇到多 Google,多 Stack Overflow 因为 SwiftUI 普及度还没那么多,文档也没那么多,加上新技术不稳定,有 bug 是肯定的,这时候多用关键字去搜索,国外的大佬还是挺多的。

4 重构 当代码看着不顺眼,可能就要开始重构了。我这里有两个重构的经验,一是事不过三,如果重复代码超过三次说明需要提取成一个函数。二是如果想破脑袋也没办法给提取出来的函数命名就不要提取合并代码。一个不明所以的函数可能比 bug 更糟糕。

5. 上架

不需要等产品完美了再上架,因为追求完美其实是一种不可取的事情。没有用户反馈的情况下,做任何优化都有用户不买账的风险,先做出个大致的情况,测试几遍没有 bug 之后就可以考虑上架了。我上架的时候第一次被拒绝了,因为使用照片权限的描述不够清楚。第二次审核的话很快,用了两天就过审了。

以上就是我所有的总结,如果有任何疑问都可以跟我私聊讨论, 微信:zhijzan。
最后,我是独立开发者阿树,希望你过的健康幸福!
「早晨计划」app store 下载链接

aloveric 将本帖设为了精华贴。 12月22日 20:31

欢迎加入 SwiftUI 的行列~

aloveric 回复

多谢照顾,我已回复了邮箱邮件。

zhishu520 回复

多交流~

厉害厉害,时代变化真快,不知道现在还有用 oc 开发的嘛。

xiaoseven 回复

现在国内公司主流还是 OC,毕竟很成熟了。我最近看到陌陌开源了一套 Lua 的跨平台方案,挺不错的,IOS 上主要用 OC 实现的,可以看看https://github.com/momotech/MLN

zhishu520 回复

嗯,没事也想自己再用 OC 做个 App,可以的哈,lua 游戏也可以了。现在跨平台看用 RN 和 Flutter 多一些。

xiaoseven 回复

嗯,可以试试,有问题可以一起交流,微信 zhijzan

xiaoseven 回复

准备面试的话,还是以 OC 为主,也不知道对不对

00 回复

谢谢~❤

很棒!UI 简洁明了,很漂亮。我刚从 JS 转 swift,还在学习中,楼主树立了很好的榜样。

mou2xie 回复

多谢夸奖,swiftui 挺好用的,如果你在开发碰到什么问题可以随时交流联系。

Suzhenyu 回复

面试的话主要还是看公司用什么。可以问问相关人员。多准备准备。

Suzhenyu 回复

招聘信息有写哇,写 OC 就多看 OC 的,其他为辅。有些就专门找 swift 的,那就的以 swift 为主。

老哥搞的不错,思路很正确。如果是个人开发者,如果想快速盈利的话,iOS 平台是首选。Android 平台起步比 iOS 的起步难度个人感觉要高几倍

正在学习 SwiftUI,希望能够坚持到上架一个 app😂

顺便问一下 LZ,现在有付费用户了吗

bingwen2019 回复

没有,可以加微信交流 swiftui,或者更详细的开发信息

如果考虑跨平台,是选择 rn 好,还是 flutter? 个人技术栈前端,rn 可能上手快一点,但是性能上还是没 flutter 能打……

william 回复

用自己擅长的,推荐使用 rn 吧。迅速构建出产品原型,性能上等做大了再优化。

学 ios 开发有什么好书或课程推荐吗?

dunizb 回复

我是野路子程序员,只看博客的,看文档,个人觉得看视频效率较低,且看完没有实际的操作机会。 但是新手一定得从视频看起,因为可以看到老手是怎么写代码的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号