初学ios,边工作边自己写应用,花了一个月的时间,终于把自己的第一个正式完成的宝贝应用《畅销腹黑小说》做出来了。先做下宣传:
这个图片也是我自己做的,毛毛糙糙,体谅下程序员吧,呵呵。刚送审,还没有通过审核,不过按照苹果的逻辑,起码这种应用还是能给读者带来一点积极体验,也没有“物化女性”的图片,审核通过应该没有问题吧。这里提到两个问题:给读者带来积极的体验、“物化女性”,是app store拒绝我第一个应用的原因。其实我第一个应用是一个美女图片应用,也就是正儿八经的美女图片而已,苹果的“物化女性”其实跟我一点也不沾边,但是却被这样评价,我到现在还没有甘心...
转回正题吧,写这个文章,一方面是自己总结,另外一方面,是发现,现在网上很多关于ios应用“从开发直到在app store发布”的文章,但是发现其实很多文章都老旧了。很多2年前的优秀文章在这两年被疯狂转载,但其实两年来,有些具体的步骤已经不一样了。我印象最深刻的就是申请idp,也就是开发者授权的步骤,现在中国地区个人申请,方法已经很简单了,不用传真,不用亲笔签名,省了很多时间了。
这个标题其实还比较大,但是我主要是想着重的写下应用开发,而不是idp申请、真机测试,这些过程。
1.对于申请idp,我是2013年1月申请的,我记得,只是按照步骤填了一些表,付了99美金,然后等了大概3、4天就收到了苹果那边的4个确认邮件,然后就登陆,在itune connect上填写了开发协议之类的,协议被苹果通过,就算正式拿到idp了。可以发布应用了。
2.对于真机测试,我也不多说了,首先在itune connect上自己填写并下载开发者授权,也就是certificate(证书),这个步骤还比较多,具体操作百度谷歌一下,可能文章没有最新的,但是我也是按照旧文章的套路来做的。
然后是加入identifier和deviceID,再根据identifier和deviceID生成development profile如果要发布的话,要再生成dispatch profile。identifier,也就是标识,在ios应用中是个重要的概念,用来识别不同的应用。identifier就是app id,每个应用,包括测试应用,都需要有appid,我们为应用申请app id的时候,苹果会随机分配10位16进制数作为appID的prefix,标准的appID,prefix后面要跟com.开发者名字.工程名。development profile和dispatch profile的生成方式差不多。但是有一点需要注意,在itune connect中,创建identifier的时候,已经明确是分成两种了,一种是指定的identifier,也就是没有星号(*)的,这种identifier能够用来生成dispatch profile(开发profile)。另一种是通用的identifier,这种identifier甚至可以只是指定一个(*),这样所有的应用包括网上下载的乱七八糟的应用,我们都可以用这个identifer来做测试。但是这种identifier不能用来生成dispatch profile,只能用来做测试。
3.应用开发的过程是一个毁灭最初开发设想的过程。本来以为这么简单的应用,网上还有无数现成例子,应该不会很久就开发完了,想不到,靠一己之力还是花了差不多一个半月;开始的时候,本来打算做成色情电子书。大概做到一半的时候,看到国内网警有打击app store色情内容的新闻。我初做应用的时候,app store中国版,搜索“色情”这个关键字,还能搜到很多令人惊讶的内容,现在也搜不到几个了。邪恶的念头不得不扭转下,想过打擦边球,但是后来我还是决定做好人;一开始的时候,在网上下载了一些电子书内容阅读页面的代码,想不到那些代码到真正使用的时候,居然没有一个是没有bug的。现在想回来,在技术上给了我最大难题的2个部件:书内容浏览页面的翻页功能、每页的字数计算功能,花了我2个星期以上的业余时间,笔记记录有小bug5个,大bug8个。如果这两个部件完全是我自己开发,说不定还不用浪费这么长时间去排除bug。而且直到现在,也还存在一些小的bug,只是不伤大雅,我就不管了。
4.另外,在数据传递上,虽然我做的应用还算顺畅,但是不得不承认,数据都是自己直接在sqlite中读取和处理,涉及到表操作的时候,特别是表查询的时候,特别难处理,还是比较乱。其实早就知道网上有一些sqlite对象处理的框架,开始的时候以为表不多,就没用了,做的时候才发现自己处理表的关系查询是一件多么麻烦的事情,我强烈建议要做sqlite关系查询,要使用相关的对象处理模型框架。
5.一些小经验:
(1)view可以通过nextResponse方法来获得所在的viewController;
(2)在我的测试里面,navigationBar隐藏前和隐藏后,在rootViewController中的view的bounds属性,是会变的。
(3)UIBarButtonItem有title和image属性,如果设置了image属性title属性就会被覆盖而看不到。
(4)设置UIButton的图片,需要使用跟按钮状态相关的那个方法,而不是setBackgroundImage方法,方法名我就不列出来了,可以自己去找文档。
(5)不使用xib文件,设定隐藏键盘要使用UITapGestureRecognizer对象。然后使用view的addGestureRecognizer方法,给view添加手势动作。这个机制在一般的书上好像都不会提到,但是是个重要的机制。
(6)CALayer的机制,跟view的显示有关。其实就是view内部的显示机制。做了这么久的开发,我越来越感觉到,view控件,例如button等等这些系统的控件,它们实际上,就是使用CALayer在显示、使用GestureRecognizer来接收手势输入的一种显示和操作的单位。而在代码上,xib文件可以用来变成对操作CALayer的代码来显示;而委托是显示和手势等等代码的一种整合方式。我想我这种全局的思考不一定是对的,但是却让我对这些知识变得越来越深刻。
说起来,下一步继续学ios,我还挺想找一些说道ios比较核心的理论的东西的。ios我都是自学的,从看那本ios beginer的英文书开始,到外面找一些视频。因为ios的知识实在是比较庞大,这些入门教程大部分都是做基本介绍,并没有特地的讲一些理论性的探讨,我在这方面也比较缺乏。希望将来网上,或者图书可以出版多一些这方面的书籍。
6.社会分享功能,之前做过android的社会分享,发现还真的是要知道一些社会分享的原理,例如OAuth认证等等,才能自己做。我一直觉得像社会分享这样的,几乎每一个应用都应该使用到的功能,应该网上很容易找到代码吧,结果的确是在code4App里面找到很多代码,可是没有一个是对现在的ios6.0合适,而且没有bug的。所有的代码我都做了测试,发现只有shareSDK比较可以满足我的要求,我就直接使用了。其实后来想回来,这个shareSDK的确是挺好用的,社会分享很容易完成,但是它在后台却有点霸道。因为发现在shareSDK的网站里面看自己应用统计数据,它的文档也没有说到会获取用户的数据什么的,但是在统计数据里,却看得到试用这个应用分享过的所有人的微博名称、具体微博内容、时间、甚至地区。个人觉得在一定程度上,这些数据应该属于私人数据,不应该在没有任何提示的情况下,被统计到shareSDK。我就想过,shareSDK不收钱,它通过什么盈利?从这个现象,我估计shareSDK可能是通过收集和统计这些shareSDK的使用者和用户的数据,来进行统计,然后把统计结果卖给其他公司的方式来盈利吧。
说真的,对这种做法,我觉得有点心寒,甚至比在app store传播色情小说,感觉更加的心寒。不过想想,做生意也就是这样,要它帮你,你就要提供给它一定的好处;而且毕竟这些数据本身在微博或者其他社交平台是公开的,shareSDK只是做了统计而已。那天我遇到注册shareSDK的问题无法解决,我就直接去找他们的QQ客服,他们不到一个钟就帮我解决了问题。这个事情也有提高他们给我的好感。这年头会一个钟回复客户的it公司,少之又少了。
7.还有应用评价功能,涉及到应用在app store提交的问题。评价功能其实很简单,它本身也就是让用户点击按钮,然后通过一行代码,让用户打开app store,转入应用评价页面而已。但是这一行代码里面涉及到的url,需要用到一个app id,这个id需要在app store中填写完应用信息,并且让应用处于wait for upload状态,这个时候查看应用信息,应用会获得一串应用id,就是app store的id。有了它才能正确进入我们的应用评价。但是应用信息的提交需要提交基本的费用设置、发布区域、应用描述、应用年龄等级、应用支持url、应用描述等。所以应用开发完之后,要马上去代码修改这个评价用app id.
8.社会分享功能需要在相关开放平台审核相关的应用。而且不同的开放平台的要求很不一样。我暂时只是做了新浪微博和腾讯微博。例如新浪微博必须要设置一个redirect(回调)的url才可以正常使用,其他的例如腾讯微博没有这个限定;新浪微博还要求,必须要在开放平台上新建了应用3天之后,才可以申请审核;还有一个大家都要注意的,两个微博都要求提供app store的官方下载链接,这个让我觉得很郁闷。我们是要审核通过了之后,应用的下载链接才能访问,而这些开放平台又要求我们一定要有下载链接才能通过审核,这么说,就是要求我们一定要通过了app store的审核之后,才能正常使用分享功能了。
9.应用图标的准备问题:现在想起来,如果要加入开放平台分享功能,光光是应用的图标需要制作9个版本。苹果官方其实只要(1)57*57、(2)114*114、(3)512*512、(4)1024*1024几个版本,但是如果你要支持腾讯微博和新浪微博,就要添加16*16、50*50、64*64、75*75、80*80。因为我对图标制作还不熟悉,我都是使用ps来做,但是后来查了下资料,发现其实有人做了专门的做图标的应用,可以很方便的进行图标编辑,所以我建议大家最好是使用一个这样的工具来做,不然的话,估计图标、启动画面、推荐图片都要花一天来做,像我一样。。。
对于图片,我还要提醒下,要让应用支持4寸屏幕,只要使用4寸的应用启动画面就可以了。而4寸启动画面的名称是要写成:图片名-568h@2x.png这样的格式;3.5寸retina是:图片名@2x.png;普通屏幕直接是:图片名.png。
刚接触ios的时候,发现png图片好像比jpg图片更常用,导致我一直有一个疑惑,png图片和jpg究竟有什么不同?(1)其实png图片的灵活性是比较高的,可以控制边缘是各种形状;但是jpg图片的边缘,一般都是矩形;例如,UIButton,设置椭圆形的png会得到椭圆形的按钮,但是这只椭圆形的jpg,在图片浏览器里还是会显示成矩形,使用的时候,也是矩形。(2)但是png的图片一般都比jpg大。从这些特征来看,如果为了尽量减小应用的图片占用的空间,矩形图片应该使用jpg,而边缘不是矩形的控件要使用png。
好了,今天就分享到这里。请读者注意,毕竟我只是初学者,上面说到的很多经验,主要都只是我在学习ios4个月年之后第一个自己亲自写的应用的经验。其中也有一些是我在做应用途中自己的估计。如果存在严重的问题,读者发现,请一定回复给我改正。
这个文也写了我一个周六的下午和晚上了,我是希望哪怕一两点能帮到您,我就觉得很荣幸了。此文本人原创,如需转载请注明转载地址。敬请关注我的新浪微博:传播正能量DE大牙
最后,我想把我第一次尝试做的美女图片应用《可可美女》送给大家:
http://baken100.vicp.cc/apps/cocogirls/CocoGrils.rar
事先声明:此应用沿袭了我一向的风格,无毒无害。是我筛选了过千张图片筛选出来的150强,觉得比较能登大雅之堂的图片应用。这个应用的设计原型,是某花网的美女应用。当然也跟某花网一样的应用一样,是被被虫子咬过的苹果评价为“物化女性”和“缺乏用户积极体验”,而无法上架的应用。给大家参考下~