文章分类:移动开发
没有上来写东西n久了。 刚刚这个星期完成了第一个iPad app的开发 iNotes for iPad。觉得有必要上来说说关于为什么我要开发这个app以及这个app的开发过程。因为学习了37signal和dhh所提倡的方法, promoting your thoughts by teaching people,在教别人做一个事情的时候(对我来说就是iPad的开发)来传播你的思想方法和产品。而且,刚刚昨天离开了工作3年的公司开始自己的soho旅程,没有什么不可以说的了(在职的时候,不能说太多工作上的东西)。因此,在未来的一个星期内,我会总结出开发iPad app的心得和我对iPad 软件的一些看法。
首先,先自我介绍一下吧,我是以下iPhone/iPad apps的开发者:
Rutter's Finder iphone apps
Techron2Go iphone app
VoiceCard iphone app
iNotes for iPad (Coming Soon/即将推出)
参与了iPhone开发整整一年,从一开始的好奇(在公司用自己的macbook从对obj-c一无所知到4天搞出了第一个demo給老板看,再用自己的macbook在公司开发了整整1个月,老板才答应买了一台iMac),到现在开发出了多个产品。公司从没有移动开发人员到现在的5-6个开发人员,到现在移动产品成为公司的杀手级产品,只花了一年时间。对iOS的开发太喜爱了,我把自己的未来赌在了这个平台之上。特别看完了iOS 4的api后,深信苹果的一句话,"iPhone 4 changes everything again"。这句话同样适用于iOS app开发之上,为什么?因为新的api+创意可以令你和大开发团队例如, tap tap revenge回到了同一起跑线上。
iNotes是我的第一个iPad程序,当我看到了乔教主对这个设备进行演示和了解完api document后,我想到,iPhone是在普通消费者的应用层面上带来了巨大的革命,而iPad这个设备,是即将在商业领域上带来巨大的影响甚至是革命。例如,教育界,医疗界,房地产界等等的行业应用。而连接设备和这是行业的专业人士的就是我们开发者。深深考虑了这些的时候,我觉得我必须要开发iPad的软件,iNotes就是我的第一个主意,因为最容易令大家想到的iPad的应用场合就是笔记记录。
虽然iPhone/iPad自带的Notes软件很漂亮,但是我发现,整个软件就是一个笔记本,每个记录是一页,在我使用一段时间后,问题很快就来了。例如,我在公司用它来做工作会议记录,回到家后,也用它来做家庭琐事记录,但很快的里面就开始乱七八糟了。你做下一个会议记录的时候,翻看上次记录就要在list里跳来跳去。因为,我觉得有必要做一个笔记app,里面包含不同的笔记本,例如会议记录是连续的一个本子,家庭记录是另外一个本子。这就形成了iNotes第一个功能需求,Notes are orginized in different notebooks. 默认的notes软件更像是一个便签式的记录工具,而iNotes是一个不一样的角色。
搜索了很多iPad上的笔记软件后,发现很多以手写为主的note程序,例如做得很好的Penultimate,但使用后,我立即发现这类app的缺点也非常明显。手写的确很有趣,但因为iPad的手写工具是手指头,例如写中文的精度太低了,要把字写得好,必须把字写得很大,一旦写大了,一页纸自然不能写多少东西。另外一个更大的缺点是,这些手写文字都被保存为图像,不能后来进行搜索或者格式转换,成为图像后,字的信息量就失去了。所以,iNotes的第二个功能需求就出来了,我的app要兼容手写但不提倡用户用来写文字,多数是用来画线,画图,和画出文字的重点部分。这样才能包装笔记的文字信息量,和以后的可搜索性。
当我把自己套进学生这个角色来用iNotes的时候,我会用它来记录上课笔记,例如这个学期的数学课的笔记,一个学期完后,我就有个一个数学课的笔记本子。到了期末,要和同学之间共享这个本子。因为当年学生时期做得最多的就是复印班里一些同学的笔记。这样,笔记共享这个功能就出来了,iNotes的第三大功能 - 输出PDF后通过email分享以及拷贝到pc上打印。
在这三大骨架功能确定后,我在这些基础上再添加了其他小功能,插入图片,网页快照(用来讨论和分析网页),地图快照(快速记录和分享地理信息),文本框功能(手写的字太大了,用来做说明时,不方便,可拖动的小文本框比较好)。
iNotes功能设计基本上就是这些。也是我对其需求的思考过程。这个文章就写到这里,下一文就开始谈谈开发技术上的一些心得。希望这些可以为一些希望加入这个圈子的开发者带来帮助,和为正在做开发的一些程序员带来一点共鸣,我们可以产生一个可以互动,互助的开发圈子。
iNotes的一些屏幕截图已经贴到了附件中,欢迎大家的各种意见。
http://anxonli.javaeye.com/blog/707282
随着iNotes的第一版完成,我近期的工作也从xcode开发转移到了产品推广阶段。在这里可以总结一下两个月以来的开发经验。 iNotes这个app的开发比我想象钟推迟了差不多一个多月。初期设计阶段以为可以在iPad的国际发布周(五月低)完成, 结果推到了六月低。主要原因是app的复杂度比一般的iPhone app高,屏幕大了,自然控件就多了,用户和app的交互多了,复杂度自然增加。 根据我自己的经验,一个iPad或iPhone app的开发周期大概是这样的:
1. App的idea形成
2. App的主要功能设计
3. App的大概界面构思和设计(使用流程设计)
4. 大功能模块代码编写
5. 大概的界面模块编写
6. 把大概的界面和功能连接后,app的大致demo就出来了
7. demo自己试用和体验几遍后,根据情况修改
8. app的0.8左右版本完成后可以加入production的图标和部分UI图片
9. 没有大错误后,0.9版本可以尝试寻找beta用户
10. 根据测试用户的反馈,重复 7 - 9的步骤
11. app完成后,加入app icon, iTunesArtwork等等UI元素。反复测试无错误后上传iTunes
上述步骤是我个人的做法,因为我没有界面设计师,大部分icons是买回来的,图片是自己photoshop做的。如果你有界面设计师,流程可能不一样。例如,在第三步,界面设计上,可以编写功能模块和设计师同步进行。这样app的demo出来后,基本上可以有界面可以用了。Anyway, 另外要指出的是,在我的第五个步之前,我还是没有碰过iPad, 所以只能在模拟器做大的功能开发。模拟器不够用吗?对于iNotes开发来说,当然不够用,simulator的多触点(multi-touch)支持是非常弱的,很多touch的测试是无法在simulator做的。
在我的第四和第五步的开发过程中,基本上是weekdays每天晚上开发3-4个小时,两天出一个功能,周末集中精力开发一到两个个大功能,例如image cropping. 很多人可能做过image cropping, 例如网页上的javascript上实现,或者flash上的实现。但iPhone OS上实现是不一样的,至少对我来说,因为第一点,你要注意内存的使用(iOS开发上最最重要的思维),在网页上,你可以不用考虑你使用了多少个图片的copy,但iOS上是不可以的,每次用完原图(大图片)后要立即释放内存。第二,cocoa的图片缩放/旋转基本上是利用UIView的transform来完成,transform的时候还要考虑用户的手指touch的位置。总之比web上实现要复杂,虽然OS 3.2已经有了gesture recognition api,相对比以前轻松。
版本做到0.8以后,我就开始在twitter招募了5-6个测试用户,所以非常感谢 @robbinfan, @tinyfool 等同学对我的app的批评和意见。很多在我看来不是那么大问题的设计,但对部分用户来说非常反感,让我在后来对这些点进行较大幅度的修改。能够在产品设计和开发过程中,找一部分测试用户参与是非常有必要的。对他们的回馈的方法,可以在app发布后对这些用户发放免费产品。这个做法即可以提高你的产品质量,又可令到你的测试用户拿到免费的软件产品。
最后,app提交iTunes以后,大概要花7-14天来等候审批。这个时期到底要干嘛呢?对我来说,这个时期就是买域名,架网站,设计网站,配置邮件服务器,反复修改app description,还有twitter推广等等。对没有做web design很久的我来说,刚是iNotes网站的设计和实现就已经花了我两整天了,还没有完成呢, 继续努力!
昨天twitter上有人问,他也想跳出来专门做iphone开发,但就是怕单干太寂寞。我的回应是,如果你要决心创业的话,首要条件就是要奈得住寂寞,特别是利润没有来到之前,特别是你雇不起专业人员的时候。老大说过,只有当工作当成是兴趣的时候,你的兴趣就是工作的时候,你才不会寂寞。