我做的应用是 Seamless,一个基于 CloudKit 的文件和文本传输工具,目前有 iOS 版、Mac 版以及网页版。除同步文件外,Seamless 的 iOS 版也是一个剪贴板应用。
应用从开发到上架历经九月,开发时间为工作日晚上和周末。在此分享整个过程所经历的事情,及一点经验和见解,希望能为同样有志于 iOS 开发的朋友提供些许帮助。
为什么开始 iOS 开发,应用想法如何诞生?WWDC 2023 时,看到 SwiftUI 的发布,我有点兴奋。因为全职工作是前端开发,而 SwiftUI 一眼望去和平常写的 React 相似;平时对独立应用开发兴致勃勃,有好些项目都开了个头。我想 SwiftUI 应该能降低 iOS 开发的入门成本,说不定写起来真的和 React 差不多(剧透提醒:不是的)。于是我就想,我能做一个什么 App 呢?
想来想去,只能从自己的需求出发。
我平时不在工作 Mac 上登录微信,但有时候需要在微信上分享一些电脑上看到图片或文件。用多了 AirDrop,其实会发现 AirDrop 也没那么方便,配对过程有时会过长,而且 AirDrop 没有文件管理。
许多人为了同步文件和文本,往微信的文件传输助手发文件或文字。但这种方式的缺点也显而易见:文件有过期的风险、文件管理过于简陋。思索着这个需求的解决方案有值得优化的地方,于是 Seamless 应运而生。
所以最早的开始,Seamless 的定位就是一个更好的文件传输助手。
自己的需求靠谱吗?为自己开发是比较容易的,但自己的需求不一定通用。上架三个月以后,Seamless 的销量不尽人意,这里面有推广的问题,也有应用需求的问题。
如果你开发应用不仅仅是为了入门和学习,那么确认需求前,最好看看 App Store 是否有同类应用,和身边的朋友聊聊自己的应用想法,获取一些外界输入,确定这个应用是否真的有需求。
我觉得现状是,如果一个应用在 App Store 没有大量同类型应用,那么大概率是它没有大量需求,而不是你的想法绝妙。
所以选一个热门分类,然后比同类 App 做得更好比埋头做全新的产品有更大的概率获得成功。记账、To-Do App、笔记 App 等品类都非常热门,需求是已经验证过的。
开始学习 Swift我平时写的语言是 JavaScript,对 iOS 开发的所知有限,大概就是知道需要 Mac 和 XCode,以及要会 Swift 语言。兵马未动,粮草先行。于是我开始学习 Swift,学习资料是由志愿者翻译的官方文档《Swift 编程语言》。
虽然我是程序员,但如果正在阅读的你并不懂程序开发,我觉得也不要让这个成为你的绊脚石。除开在程序语言学习和编程经验上有优势外,iOS 开发和前端开发差别颇大,包括使用的工具、代码的组织形式等。绝大部分 iOS 开发相关的知识这些对我而言也是新的。
Swift 当然不是 iOS 开发的必需,现在有很多可选的跨平台技术方案,比如目前较热门的 Flutter。但据我观察,iOS 开发的盈利概率和水平仍是较高的,而采用原生的技术开发的 App 能提供最好的体验,这相对提高了盈利可能。
如果你不知道该选跨平台技术还是 Swift,那么你就应该选 Swift。
开始学习 SwiftUISwift 语言上手以后,我就开始学习 SwiftUI 了,学习资料也不过是苹果官方的 SwiftUI 文档,当时除了这个以外,也没有其他的了。我跟着这个 Swift Tutorial 一行行地写,学完之后的心情如下图:
当时的 SwiftUI 还是第一个版本,许多功能不完整,而且相关学习资源稀有,对于初入 iOS 开发的人来说,一旦遇到问题就很容易落入困境,难以解决。再加上自己三天打鱼两天晒网的性格特点,学一阵子后我就弃 SwiftUI 而去,应用开发就此搁置,此时仍是 2023 年,世界仍和往常一样。
开始学习 UIKit时间快进到 2023 年。
WWDC 2023 的新闻让我想起了这个应用,总不能一次次地挖坑而不填坑,于是一狠心一咬牙,在 WWDC 2023 前订阅了苹果开发者帐号。那时候我已确认 SwiftUI 还不是成熟技术,UIKit 仍然是首选,于是开始学习 UIKit。
UIKit 的学习资源非常丰富,我当时看的是 Programming iOS 13,遇到某个书中没有详解的知识点时再搜索