为什么一个人做原生Apple应用
只要共用的规则少一些,并让每个应用保有自己的个性,一人工作室也能为诊所、教练和小企业打造原生Apple应用。
ZaatarLABS首页的样式表里有一条注释。比起它周围的大部分代码,我更喜欢它:
/* wraps because eight icons no longer fit one row on a phone */
.loader-stage { display:flex; gap: 18px; flex-wrap: wrap; justify-content: center;
max-width: min(600px, 88vw); }
网站加载时,应用图标一个接一个落进同一行,同时进度条慢慢填满。有一段时间,这一行在手机屏幕上放得下。后来就放不下了。没有人报告这个bug。是我自己发现的,因为只有我一个人在看。
修复只用了一行:flex-wrap: wrap。那条注释是留给以后的我的:下次我再纳闷图标为什么排成两行,就能找到答案。它也是我对这家工作室最诚实的概括:只有一个人,货架上的应用已经多到一行放不下,而这个人会一次次回去修那些小问题。
本文讲的是这种方式怎样运转,以及在哪些地方行不通。
货架上有什么
首页说得很直白:为诊所、教练和企业打造的智能Apple应用。它们是Apple平台上的原生应用,由我开发。我不是从别的平台移植过来,也不是给网页视图套上一个图标。
我不打算在这里列出各个应用和它们的功能,每个应用都有自己的页面。我想解释的是为什么要这样做,因为一个开发者做很多应用,听起来就像注定会有一堆半成品。有时候确实差点如此。
只有我一个人,为什么还做原生
对独立开发者的常见建议是:选一套跨平台技术栈,代码写一次,到处发布。这样省时间,我理解大家为什么这么做。
我走了另一条路,原因很具体。这些应用的用户,比如诊所、教练或小企业,本来就生活在Apple的工具里。应用的表现和系统其他部分一致时,要学的东西更少,出错的地方也更少。不一致时,他们会察觉,即使说不出哪里不对。
代价是真实的。我做的一切都绑定在Apple平台上。Apple一有变化,我就得在货架上的每个应用里逐一消化。没有团队可以分担这些工作。
好处也是真实的,而且会不断累积。做一个应用学到的东西会直接用到下一个,因为它们都用同样的工具开发。我为一个应用想出的修复,往往可以搬到其他应用上。正因为如此,一个人才能让不止一两个应用持续运转。
AI在哪里运行
其中一部分工作用到了Apple Intelligence。我想准确说明它在哪里运行,因为营销文案很容易在这里出错。我们的应用在Apple的Private Cloud Compute上运行AI。它们不在设备上运行AI,我也不会声称如此。
这是有意的选择。使用Apple自己的基础设施,意味着我不会把您的数据发送给我挑选的第三方AI提供商。代价是我要依赖Apple提供什么、何时提供。如果某项能力还没有,我就不能用别人的模型来补上,同时还守住这个承诺。
一家工作室,多套配色
下面是一个较小的决定,它让我学到了一些东西。
每个应用都有自己的颜色。比如The Smart Budget用的是古铜色调。而工作室本身,也就是标志、网站,以及所有写着ZaatarLABS而不是某个应用名称的东西,是绿色的。
我发现这两者很容易混在一起。我给工作室做横幅时,它做成了古铜色,因为那是最近一直打开着的配色。看起来没问题,但它是错的。那张横幅是给工作室的,而工作室是绿色的。
这是个小错误,但它很典型,正是一人工作室会出的那种错。工作不会大错特错,而是慢慢跑偏,因为你上一次碰过的东西会渗进你下一次碰的东西里。解决办法是把规则写下来:各应用的颜色只属于各自的应用,凡是公司层面的东西都用绿色。我不相信自己在忙碌的日子里还记得住。
图标也发生过同样的事。营销文件夹里的一个标志文件并不是应用真正的图标。现在,工作室需要某个应用的图标时,都从该应用自己的项目里取。营销文件夹里的文件不可信。
我想对另一位独立开发者说的话
我不认为一个人做很多应用是值得照搬的策略。我想分享的东西更具体。
选择与用户相匹配的约束,而不是这个月最能帮您省时间的那个。对我来说,那就是原生Apple应用,因为我服务的人本来就在那里。
把小规则写下来:哪种颜色属于谁,真正的图标在哪里,那一行为什么会换行。当您是唯一的开发者时,一条写下来的规则就是最接近同事的东西。
准确说明您的软件能做什么、不能做什么,尤其是涉及AI时。“在Private Cloud Compute上运行”和“在您的设备上运行”不是同一个说法,您的用户应该得到真实的那一个。
还有,时不时在手机上看看自己的作品。没有别人会告诉您,图标已经放不下了。