多年前,我开始接触并了解 iOS 开发时,便希望能找到一个课程,为我说明 iOS 独立开发到底在做什么,需要掌握哪些技能。然而在学习与寻找的过程中,我发现现有课程常范围过于狭窄,或过分关注于技术,却缺乏对整个应用和领域的讲解。

如今,有了 SwiftUI、visionOS、ChatGPT 等新技术的加持,拥有一个属于自己的产品不再是梦想。

在本系列教程中,我希望把最新的蓝图递到你手中。它是一个包含发现需求、早期设计、中期开发、后期宣传的 iOS 跨平台独立应用开发教程。给你们,每一个想把创想变现的人。

为什么要出新版

「创作者的 iOS 独立开发指南」原版写于 2020~2021 年。发布之后,受到了来自不同行业的读者的喜爱,让很多人看到了创造属于自己的产品的路。

本套开发指南自编写之初,便秉持着介绍最新技术,最前沿方法,最易用写法的设计思路。在语言的选用上也是如此,诸如 Swift + SwiftUI,所讲解的内容均紧跟 Apple 最新开发思路。

在原版教程的基础上,过去的两年中 Apple 官方也发布了很多让人兴奋的更新。比如每个人都能在 iPad 上发布应用程序,甚至不需要 Mac 也可以将创作分享给世界。全新的 Apple WeatherKit,能够让任何人都能随时获得天气信息;Swift Charts 全新图表系统,用更优雅的方式呈现内容等等。

此次《100 小时后请叫我苹果开发者》,我会将最新的 ChatGPT 辅助编程技术,以及 visionOS 全新平台纳入考量,在修订原版教程的基础上,额外新增包含 visionOS 开发的以下 20 篇新内容。助力你不同凡响的创想与喜悦,与全世界用户分享。

  • 用 iPad 做开发,每个人都能在家发布惠及全球的产品
  • 零基础学会开发一个「敲木⻥」App
  • Lock Screen 锁屏小组件,让你的应用一触即达
  • 灵动岛开发,应用图标动起来 ActivityKit
  • Swift Charts 全新图表系统
  • Async Await 稍等,⻢上继续的新 Concurrency
  • Xcode Cloud 编译测试上传全自动化
  • Swift 编程语言:语言特性更新及速查表
  • 在 SwiftUI 中用 Gauge 来展示进度
  • 从 Apple WeatherKit 组件调用天气
  • 让 Apple Music 为你的音乐播放音乐
  • 用机器学习 Machine Learning,让设备更懂用户
  • 向哈佛商业评论学商业化
  • 用 App Intent 让你的应用程序,响应 Siri
  • 新时代的 visionOS 及 Apple Vision Pro 入门简介
  • 用 SwiftUI  + visionOS 编写 3D 应用 UI
  • 负责基础 3D 场景打造的 Reality Composer Pro
  • 给场景添加各类逻辑,ARKit 样样精通
  • 用 Unity 打造沉浸式体验
  • 善于提问,ChatGPT 让你的开发历程如虎添翼

实践与经验

我认为单一专业的知识深度足够,但广度缺失,因此在学习期间,我接触并了解了各领域的独特需求,在加拿大 SFU 修了计算机和设计双专业。其次,还在商科、心理学、语言学、电影史、游戏设计、音乐理论、领导力训练等方面有涉猎。这些知识在不同程度上助益我理解应用程序创作所需的各个方面。

在大学期间,我带过二十几个程序设计专业的大学生,一对一教他们编程;与少数派合作出版了 macOS 效率手册;受温哥华本地英语授课机构 Beyond Fluency 邀请做 iOS 端程序的开发,也和小伙伴一起开发了 AI 记录应用「心光」

在教导编程期间,我明确感受到部分学生对所学知识的背景掌握并不明晰,学习时理解困难。教授通常对学生之前所学内容的了解程度有所高估,而忽略很多对理解至关重要的知识背景的讲解。在本教程中,我希望从知识背景出发,先告诉你为什么需要学习这些技术,而后再详细讲解。

在独立开发这件事情上,市面上做得比较好的免费和付费教程我基本都看过。很多新人一上来就直接学习斯坦福 iOS 公开课 CS193P,很快被内容难走,而在我创建的斯坦福课程讨论组中,364 人中只有十余人坚持到第五课之后的内容。

现有教程大多侧重于程序员教程序员,这听起来很合理,但实际并不完全适合独立开发。太多人跟着网课照猫画虎,做了个和视频里一模一样的应用,然后不知道接下来如何。究其原因,是教程作者普遍缺乏跨学科思考的能力,只看到眼下用所有编程技巧所创作出的范例应用,却不曾想这些应用的实用价值。作为程序员的授课老师常精通代码,却通常不具备发现市场需求的能力。

App Store 应用程序 - Apple

过去六年可以看作是 iOS 开发技术彻底换代的重要阶段,Swift 与 SwiftUI 技术的出现为未来跨平台应用打下扎实基础。时间快进到 2023,这些技术已经从当时的勉强可用,变成了十分完善好用。新的 SwiftUI,也成了诸如 iOS 17、watchOS 10、visionOS 的开发核心。

在这个时间点制作教程,也和技术换代有关。然而市面上的教程许多采用较老的 UIKit 作为图形框架,语言采用 Objective-C,上手有难度且极易劝退新人。所以本次教程中,我会使用注重探讨 SwiftUI 及响应式编程的应用构建方式。并由此展开,介绍独立开发的其它维度。

在课程准备中,我发现读者虽目标都是 iOS 独立开发,但背景差异较大。有考虑独立开发的设计师、有具备其它技术背景,考虑做自己应用的程序员、有计算机专业希望进入领域的学生、还有希望了解此领域的其它职业从业者等。虽然都是 iOS 独立开发新人,但不同背景读者对知识的上手速度,心理预期差异也非常大。

我会尽量对复杂概念由浅入深的解析,但你也需要意识到,因背景不同,每个人开发独立应用所需要付出的努力也不尽相同。我也会将市面上已有的最优秀教材纳入考量,将详细用法介绍给你,作为本教程的额外学习资源。

创作初衷

太多人把编程当作掌握各种语言、科技、算法,而忽略其实际应用,这非常可惜。学习独立开发其实适用于所有人,它会教给你一种极具创造力的思维方式。你可以用自己的创造,解决他人的实际问题。

2020 年初,我曾和父亲商量过想制作一套教程的事。那时候,父亲说你应该把这教程做出来,让尽可能多的人受益。如果你不做,没有多少有相似背景的人来做这件事。直到 2020 年 6 月 18 日我的父亲因脑溢血忽然离世,我暮然想到父亲与我讨论过学习的种种。我想让更少的人走弯路,将这件有意义的事情做出来。这套教程包含我在独立开发 iOS 应用中积累的经验与总结,借此把我所知分享给所有读者。

谨以纪念我的父亲王成革。

课程简介与大纲

现有的知识体系注重培养一个人专强的能力,却忽视了知识间跨领域的关联。而知识的关联性,就如同点穿成线,线穿成网,从而形成知识的储备。值得注意的是,许多精彩的创造恰恰来自于对多领域的了解,和跨领域的碰撞。

平面设计用于艺术展品 - Maria Jeglinska的背景展,Michelle Williams

如同影视,运用了镜头、音乐、叙事等,来将某个观念传递出去;建筑,包涵了对美学、数学、空间理论等的理解,来创作出与社会环境相和谐的设施;而切准需求、定位独特、能更好服务受众的的应用程序,依靠的不仅是你对编程,算法和计算机理论有多熟练,而是将不同领域的东西拿来,像拼积木一样组装在一起。

创作独立应用恰好就是这样,你会用商学明确产品定位,用揣摩后的设计与用户交流,用程序代码展现逻辑思路,最终用你的应用来让更多领域受益。本期教程中,我会根据自己的开发经验,以企业学的发现问题来介绍创作内容、平面与交互设计来剖析界面设计、计算机科学的基本理论及编程知识来讲程序实现、商业模式来解读应用营收、广告学的基本知识来带你了解应用宣传。

本教程会以多篇独立主题的文章呈现,内容覆盖跨平台开发的各种维度,包含最新的 visionOS。你可以根据自身需求挑选阅读,也可以顺序阅读。下图罗列了本教程的详细大纲。

授人以鱼,不如授人以渔,我会将知识与流程给你,让你对独立开发心中有数。

即将开始的第一章中,我们会从零开始,学习开发中将持续用到的重要概念。准备软件,了解独立开发的完整流程,介绍 SwiftUI 及 Swift,并学习 Git 以便保存项目进展。

欢迎你去玩玩看我们新上架的 App 「心光」,它完全基于 SwiftUI 和 Swift 开发,并且深度应用了各类 AI 技术。上架后不久 Apple 便将其选为月度最佳 App,愿它能陪伴闪闪发光的你,记录生活精彩瞬间。也希望它能给想做独立开发的你以最美好的期待。