用传真机试过N次,又用faxzero试过N次以后,全部都提示失败。但是,世事如此难料,今天凌晨收到了信用卡境外消费99美元的短信提醒,早上起来信箱里就已经收到了激活码,点击链接就激活了自己的开发者账号。也不知道是哪一次传真发成功了。
登录开发者中心,右侧有个Portal的链接,点击进去就是自己账号的管理中心,初次进入有个向导,可以帮你创建一个开发者证书。最好是下载它的完整的向导说明书,是一个PDF,7M多,步骤还是挺详细的。但是这本手册在网上没有见过中文版的说明,所以在这里简单介绍一下。
这个开发者中心的用户权限分三种类型:Agent,Admin,Developer。Agent拥有完整的管理权限,Admin也可以管理用户和证书,Developer只能管理自己的证书和设备。只有Agent有上传软件到App Store的权利。(但是我没有看到添加其它用户的功能,可能需要299美元的账号类型才会有,我自己的账号登录进来就是个Agent了)。
对于个人开发者,你需要完成以下几个过程:
申请一个Development证书 > 设置你的IPhone手机 > 创建一个App ID > 创建并下载安装一个Development Provisioning Profile。经过这几步,你写的程序就可以跑在自己的手机上了(否则只能在虚拟机里面运行)。
然后申请一个Distribution证书 > 创建并安装一个Distribution Provisioning Profile > 编译你的程序 > 就可以发布到App Store了。
Apple这个公司,实在是个很会赚钱的公司。一部硬件性能一般般的IPhone手机,两年多就出了两个样式,卖的还挺火,更神奇的是,电信运营商还得跟他分成,不但卖手机,连话费他都能赚一份。而更加夸张的是,作为一个依赖于开发人员的系统平台公司,Apple对待开发人员却是极其的苛刻。首先你要买个99美元的开发者账号,才有可能把你的程序放到它的App Store里去卖钱。所以不管你的软件有没有可能卖出去,苹果先赚一笔。软件放上去以后,需要经过苹果的审核,涉及系统级的程序,比如短信类的,电话类的,浏览器类的,视频播放器类的,一率不给通过审核。假如运气好,通过了,你每卖一份软件,苹果还抽成30%。
即便如此,由于互联网那些因为在App Store里面放一两个小游戏而一夜暴富的传奇故事还是刺激着越来越多的开发者想尽办法加入这个团队,而苹果,显然没有准备好迎接这么庞大的开发者队伍,所以,服务就出了点问题。
在开发者网站上申请账号,选择99美元的版本,一步一步下去,到最后提示,您所在的地区没有在线App Store业务,不能网上付款购买,需要打印并填写一张申请表格,然后传真到1(408)8627602。很郁闷。然后打印了那个表格,写上自己的信用卡号和签名(怕怕),传真……这个号码居然一直无人接听。两天打了七八次,全部都是无人接听。上网一搜,在Apple的官方开发者支持论坛上半年来不停的有人报怨这个传真的问题,至今无人解决,能不能传真成功全凭个人人品。
后来找到了一个在线的免费发美国传真的服务网站,于是又用数码相机把申请表变成图片,放到word文件里,通过这个网站上传。两天之内又在不同的时间试了四五次,每次这个网站都会自动重试五次,依然没有一次发送成功。话说回来,即便发送成功了,还要等待财务的处理流程,信用卡能否成功支付美元还不知道。支付成功了还得转到账号管理部开通账户,然后自己在线制作证书下载下来编译到程序里,上传程序还要等待审核,能不能审核成功还不知道。审核成功了放出去,有没有人买还不知道……
苹果天天都在宣扬自己的App Store里的4万个游戏和软件,还有那10亿次下载,但是却将如此多的问题视而不见。可能苹果公司并不太关心美国以外的地区,无论是那里的手机客户还是那里的开发人员,总感觉苹果就像一个很容易满足的小老板,饭不在多,吃饱就行,够吃了,就不考虑再赚多赚少的问题了。可能服务小众更容易保持自己的利润率,尽管利润量会小一些。
激情的力量真是不可估量。从5月27号拿到《IPhone开发基础教程》,后面用了两天的假期写了两个程序,先是一个普通的数据库阅读程序(被威锋论坛删了)。为了找到一个合适的程序结构,测试了几种不同的方式,最后选定了Navigation方式。
每个IPhone程序拥有一个Window和多个View,Windows可以理解为就是这个屏幕,Window上必须要放一个View才能显示内容给用户。程序启动的时候调用一个程序级的Delegate,打开这个Window并加载一个View。
一个View由一个ViewController来实现其功能代码,而View的界面如果你愿意的话也可以完全用代码来生成,每个控件都是View,都可以在初始化的时候确定自己的起始位置和大小,用代码来生成和显示也没问题,但是通常更合适的方式是用一个xib文件,该文件可以使用Interface Builder来构造,就像VB一样拖放控件。
所有需要同控件调用的方法,比如需要指定给按钮的方法,或者文本框里的事件需要执行的函数等等,都需要先在ViewController类里面声明为IBAction返回值的方法,然后通过在Interface Builder里面按住控件的事件名拖到Controller所属的First Owner上然后选定那个方法来建立关联。
所有需要用代码来修改其属性或调用其方法的控件,比如要启用禁用的按钮,要取值的文本框,都需要先在ViewController类里面声明IBOutlet类型的变量,然后按住Control键把First owner拖到控件上再选这个变量来给变量和文本框建立关联,然后你在代码中操作的这个变量,就是实际的这个文本框了。
《IPhone开发基础教程》这本书作为入门非常不错,可是它缺少很多高级内容,不能作为参考书,这个时候就需要这一本了《The iPhone Developer’s Cookbook-Building Applications with the iPhone SDK》,里面有许多高级用法,甚至SDK文档里没有提到过的隐藏内容。
开发过程中遇到了相当多的问题,幸亏还有Google。即使如此,仍然走了相当多的弯路。比如为了在Navigation顶部的导航栏右边加两个按钮,花了半天的时间,最后还是放弃了。始终没有办法做到彩信软件SwirlyMMS阅读界面上那个按钮效果,一开始用自定义View,放入两个按钮,再把这个View指定为rightButtonItem的CustomView,按钮是成功的放上去了,但是按钮是平板样式,跟左边的工具栏按钮的样式大相径庭。后来使用一个Toolbar,加上按钮,按钮的样式倒是正常了,但是这个Toolbar怎么也无法放到rightButtonItem那个位置,一放上去,Toolbar就占到最左边,而不是最右边,最后只能把Toolbar放到Title的位置,结果就无法显示Title了,而且Toolbar的顶部边框跟NavigationBar的边框不一样,有一条很明显的线,cookbook的教程里的图片也有这个问题。最后还是放弃了,在最下面又加了一条单独的Toolbar。还有为了播放声音,也搞了几个小时,用SoundServices库代码很简单,结果播放没声音,就是出现一点点的噪音,后来换了AVAudio库,还是只放一点点噪音。还以为是声音文件的问题,结果换了Windows自带的声音进去也不行。最后才发现是因为声音播放的代码是非独占的,刚刚开始播放就走到了下面一行release上,结果就停止了。改成全局变量搞定。
这个release在Object C里面是个很头疼的问题,当我程序出现了一个EXC_BAD_ACCESS的错误的时候,根本无从定位错误的位置,虽然知道是由于过度release造成的,但是要在众多代码中找出哪个变量是不应该release的,着实费了些功夫。
另外,程序比较大(数据库比较大,程序其实是很小的),每次放到真机上测试都要花很多时间,建议开发过程中还是使用一个特殊的数据库,弄小一点,发布的时候再换成正常的。大部分情况下用模拟器测试就够了,但是,模拟器不能发声,因为我的MAC是虚拟机。
编译出来的程序是个后缀名为.app的文件夹,在Mac下会自动识别为程序,双击会提示平台不对,不能运行,但是拿到Windows下就是个普通的文件夹。把这个app目录拖到ITunes上会自动生成一个IPA,但是这个IPA在ITunes里没图标。要做成有图标的,还得手动处理,把这个app目录放到一个Payload目录下,在Payload所在的目录放一个iTunesArtwork的文件,这个文件就是一个jpg图标,文件名改成这个就行,没有后缀。然后把这个文件和Payload目录一起压缩成zip文件,再把zip后缀改成ipa就可以了,双击就会加载到iTunes,点同步就可以安装到手机上。Apple居然不提供一个方便一点的打包工具。
基本上感受就是这些了,连续开发了几天,也在威锋上连续发布了几个大版本,程序还算比较受欢迎,等明天去申请个开发者账号,放到程序商店里看看。
1、如果你有自己的Mac电脑,跳过这一步。如果没有,可以去下载这个:http://www.verycd.com/topics/2746139/,是个vmware镜像,非常完美,安装上vmware,解压就可以运行,速度不错(硬件当然要够,可以上网)。不过似乎AMD的CPU不行,如果你用的是AMD的,就别浪费带宽了。
2、启动进去以后就想办法去下载SDK,官方的下载速度还不错,用迅雷两个小时就搞定了,想办法传到Mac里面去(我是在windows里建了个serv-u的FTP,在Mac里面用ftp命令上传下载东西,很方便,以后要经常用到)。
3、安装SDK,双击下载的dmg包,自动加载成磁盘镜像,双击里面的安装文件自动安装好,然后打开磁盘目录,到/Develop的目录下去运行xcode,能启动就算成功了。
4、你需要一本好书,《IPhone开发基础教程》这本书是一定要买的,讲解非常细致,适合我们这种从来没有接触过Mac开发的人,每一步细节都没有省略,绝对不会出现按照书上的步骤操作完却发现结果跟书上不一致的情况。虽然翻译的有个别不到位,但是整体翻译水平是可以得80分以上的。我也没必要把里面的教程再在这里写一遍,写的也没人家好。这本书上有些高级的内容没必要一次看完,什么时候用到什么时候看就可以了。
5、你还需要知道Object C的语法跟其它语言的不同,如果你一门语言也不会,那还是从头学C语言去吧。如果你已经用过其它编程语言,看看这本就够了。http://www.weiphone.com/viewthread.php?tid=149737
6、万事俱备,可以开始动手了。照书上的课程练习几章,打打代码,写两个程序在模拟器里跑起来。
7、需要构思自己想要开发的程序的架构,分几个界面(View),界面间怎样相互调用,每个界面上放什么,然后找一章类似的教程,照着做,加入自己的内容就行了。
8、编译完成测试通过,想放到IPhone上去运行,还需要个证书,当然现在是不太可能去花99美元买一个了,成熟了再买也不迟。照这个做:http://www.weiphone.com/thread-222380-1-3.html,自己做个证书,添加到Project setting和info.plist里面去,再编译成IPhone平台版本就可以用了。(这哥们的第四篇文章我照做都没有成功,不知道哪一步写的有问题)。
至此,你的第一个程序就可以发布出去见人了。
想开发IPhone程序,首先得弄个MacOSX系统,版本要求10.5.3以上。虽然网络上也有一些Linux下甚至XP下搭建开发环境的文章,但是那些只限于开发工具链,没有开发工具,对于新手来说,不使用开发工具直接写代码来开发IPhone程序,那是根本没可能成功的事。不管是买台Mac也好,在PC上装个Mac也好,用虚拟机也好,准备好操作系统。
然后是上Apple的开发者中心注册个用户名,下载IPhone 2.2.1的SDK,很大,1.75G。下载完成后安装很容易。然后就可以进/Develop目录下启动xcode程序了。File菜单下面新建项目,提供了几个模板,选个View Based项目,下一步,改个名字,就生成了一套新项目的框架,直接点顶上的Build and Go就可以编译完成并自动启动IPhone模拟器然后自动启动这个程序。
IPhone程序的结构还是比较容易理解的,Object C的语法虽然是比较奇怪,(从来没有在别的语言里面见过这种用法),但是只要稍微理解一下跟别的语言的语法上的不同,要上手其实是很容易的。对于Object C方面,要了解的无非就是头文件里面的类定义,属性定义,方法定义,实现文件里的属性声明,方法声明。类的实例化以及内存释放,类方法和属性的调用方式,就足够了。
IPhone的程序架构方面是完完全全的MVC架构,视图和逻辑完全分开。在窗口编辑器(Interface Builder)里面设计的窗口跟代码没有任何关系,要想使用窗体上的控件需要在Controller层定义相关变量和动作方法,然后把变量和方法通过拖拉的方法跟控件关联起来,然后程序就会知道这两者之间的关系了。同一个方法可以方便的关联到任何按钮上,同一个变量也可以指向任何一个类型相符的控件。你所要了解的,就是在Controller中应该使用哪几个方法来显示和保存数据。
Apple提供的IPhone可用的控件种类不多,但是每个都很强大,大部分控件都可以互相嵌入,因为大家都是从同一个基类UIView继承下来的,所以,视图里可以嵌入视图,表格里也可以嵌入其它视图,比如表格的每一行里都可以放入标签或者图片,或者另一个表格。充分利用这种特点,就可以用很少的控件类型写出非常丰富的界面。
IPhone程序处理数据直接使用sqlite3数据库,读写也都还算方便,当然要是能够提供一个官方的ORM类那就更好了,目前还是得自己去实现一个。不过sqlite本身没有加密功能,所以你的程序如果是以数据为核心竞争力的,还得自己想想办法加密数据库里的数据,没有办法像其它数据库那样直接定义一个复杂的数据库读写密码来解决问题。IPhone的数据库读取性能很强,在数据库里读取5000多条数据生成一个TableView,只需要六七秒的样子就可以显示出这个表格,并且上下滑动表格也很平滑,并不存在什么内存问题。
编译出来的软件只能在模拟器里运行,放到IPhone上是不能运行的,因为没有授权。需要花99美元去买个Apple的授权,才能让程序运行在IPhone上,当然,这一步有办法跳过去,用MacOS自带的签名工具自己做一个签名,就可以让程序跑在IPhone上,但是这样的程序还是没有办法放到AppStore里面去卖钱的,想赚钱,这个投资是必须的。Apple真是个稳赚不赔的生意人啊。


近期评论