从小白到发布第一个iOS应用我学到了什么?

1,079 阅读8分钟

我近期刚刚向App Store发布了我的第一个iOS应用程序【准确说是2019年5月23日】(很开心^_^😁),在这个过程中,我学到了一些东西,哦,不,是很多东西,也许有些人可能会觉得有用,所以今天给大家分享一下。

等等,是个什么应用程序?

我就姑且认为看到这里大家心里会有这个疑问吧?鉴于此,我还是简单的向大家介绍一下我的第一个应用程序吧!

它叫【点点纪念】,是一个免费的生日、纪念日、倒计时等重要日子记录和提醒的应用程序,这也是这篇文章会详细说到的,我个人是怎样一步一步开发完成这个产品的。

【点点纪念】目前只用iOS版,它极简、易用且安全,数据都在用户本地,我不搜集任何用户的数据信息。

象征性的给个下载地址吧:

itunes.apple.com/cn/app/id14…

好了,闲话不多说,进入正题!

开发一款像样的应用程序需要很多时间

当然开发一个应用程序需要很多时间咯,这好像是众所周知的道理。但是,当你是唯一一个为此而工作的人,特别是你还是一个全日制的996上班族,这就需要更长的时间。当我第一次有制作这个应用程序的想法时,我想这应该不会超过两个周末的时间我就可以搞定,当然这件事情确实很容易在我设想的那个时间段内完成的。

然而,虽然我是做开发的(主攻:后端),但是我从来没做过iOS的开发,更何况我是想自己来编写所有的东西(尽量不使用第三方库)。毕竟,这也是一次学习经历,我想尽可能多地了解iOS、Cocoa Touch和Swift。

所以它花了我四个周末的时间,比我原先想象的要长,我低估了制作一个姑且让我自己觉得还不错的应用程序需要花费的时间。

我首先明确一个目标,一旦我的应用程序在App Store发布了,那么我必须负责维护这个应用程序,确保该应用程序保持维护和正常运行。因此,当你有一个超级酷的想法的时候,确保你愿意在接下来的一两年内投入其中并保持这个状态。

The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.

— Tom Cargill, Bell Labs

其中的挑战就是有一些像我这样的新人(我说的是iOS开发,毕竟后端开发是我吃饭的手艺)并不完全掌握的东西(比如:iOS开发流程、Cocoa Touch和Swift)。

建立第一个自己的应用界面很有趣

在我开始开发这个应用程序之前,我没有任何创建iOS界面(也叫视图)的经验。 所以,我花了很多时间去了解和学习Apple为我们提供的UIKit内置的所有视图。遇到问题时,一般情况下,我会选择去官方论坛查看一些关于视图的在线帖子和一些StackOverflow上的相关问题。 从那里,我快速学会了如何制作我想要构建的页面,然后在接下来的一个周末左右的时间里我完成了初始版本全部页面的构建。

总而言之,我学到了大量有趣的东西,可以使用自定义UIView来完成,它帮助我思考如何以不同的方式创建我的应用程序。如果您从未构建自定义视图,你也可以尝试一下。

我不擅长设计

是的,我不擅长,所以我会尽可能多的按照自己感觉不错的风格自定义页面,以此达到效果,整个应用界面基本都是按照自己感觉好的状态构建的【求轻拍】,大家有建议或有兴趣加入【点点纪念】把你的设计想法付诸实践的,可以联系我;不过请相信,我的设计水平也会越来越好的,毕竟,我也是很上进的!

Hey Siri, 提醒我有时间多看看设计相关的课程。

计划,计划,计划

这可能是我在这个项目上学到的很重要的事。我是iOS开发的新手并且是边学边做,所以我没有完全计划好一切,我的意思是,我知道我想要建造什么但不是很清楚要建造成什么样。也没有一个产品经理和我商量。所以我在开发这个应用程序时犯了一个很大的错误,就是在我想做却又还没有任何计划的时候就开始了开发,以至于手忙脚乱,有点太赶了。

计划至关重要,因为它可以帮助您保持专注,同时也可以阻止你的激情减退。显然,万事万物会发生变化,计划也一样(毕竟古人云:计划赶不上变化),但也要尽量尝试在开始之前做一份计划,哪怕只是自己的一个Side Project。现在有很多在线工具可以帮助我们很轻松的就实现前期的一个简单计划了,比如我很喜欢使用的一个工具叫:Trello。

逼着自己完成计划

这是我在开发这个应用时经常遇到的问题。我很容易想要放弃我已经开发了一段时间的东西,然后转向更有趣的东西。有一个周末,我没有完成任何开发工作,并决定做其他事情。当然,保持劳逸结合是很重要的,但是要选择放弃就不应该了。

所以,逼着自己完成计划也是很有意义的,但这并不意味着你需要花一天时间重构你的整个代码库如果仅仅只是因为你对你的代码内部某些命名的方式感到不满意(我就这样做了😂);而有意义是你应该将你在Trello板上计划的新功能加上、或修复你之前发现的BUG。

作为开发人员,很容易看到自己的代码不满意而想要让它变得更好,但实际上我并不认为你会对你编写的代码100%的满意,总会有一种更好方式让它更好 。而最终用户不会知道这其中的差异,所以起初来说它是次要的,这个优化过程应该放在应用发布后的更新和重构中去进行。

你不会比用户更清楚你应用的不足

说真的,如果你有机会在你决定将应用上线之前交到用户手中去做一次小范围的使用体验,那是最好不过的了!作为开发人员,我们有时会关注开发和设计的较小方面。你开发的应用可能在你自己看来都没问题,但是当拿到用户的手上时,就暴露出了很多问题;某些功能体验不佳,某些系统版本下崩溃等等各种问题;这时,你不可能写一大堆测试去将所有细节都测试到位,毕竟你是一个人在战斗!

如果你身边没有很多可以帮你测试应用程序的亲朋好友,你就可以尝试将你的应用发布到Xcode Flight Test并在某些社交媒体平台上发布测试邀请链接,请大家帮助你进行应用测试。对于【点点纪念】,我邀请了超过20个人做了体验测试,虽然不是每个人都给了我反馈,但是,我也收到了很多很有价值的反馈意见,这帮助了我将【点点纪念】做的更好。

记住:千万不要害怕批评。

最后的想法

在【点点纪念】上的投入很有趣,尽管有时也非常困难和令人沮丧、尽管现在的应用还不完善,但总体来说这是一次很好的体验。 我学到了很多东西,希望其他人现在可以享受我创作的东西。如果你是软件开发的新手,那么静下来花几天时间尝试学习开发一些东西。

多实践,不断提高自己的技能。它不一定是惊人的或伟大的,但学习从来都不是坏事。如果你需要更多建议或希望参与到【点点纪念】的开发、设计、翻译中来,请随时与我联系!

最后谢谢大家,【点点纪念】我会尽力一直维护下去,希望大家多多支持!