《企业级ios应用开发实战》一1.3 iOS企业应用程序的发布

1.3 iOS企业应用程序的发布

除了上述特点,iOS企业应用还有一个显著的特点,就是应用程序的发布方式。iOS企业应用具有两种发布方式:In-House和Ad-Hoc,它们并不经过苹果公司的App Store进行发布,而只是在企业内部进行发布。换句话说,不经过苹果商店的应用程序审核程序。

1.3.1 iOS应用程序发布与App Store

2008年3月6日苹果公司推出了iPhone的应用程序开发包(iPhone SDK),吸引了全世界的开发者。2008年7月11日,App Store正式上线,从而开辟了一种前所未有的应用程序销售模式。起初,只有少数的开发者(主要是大型程序开发商)掌握iPhone的开发语言,应用程序商店出现的都是一些精品程序。例如,在2008年TIOBE发布的全球编程语言排名中,iPhone等使用的Objective C一直都在40位左右徘徊,使用率为0.134%;排名第一的为Java,使用率约为19%。《连线》杂志评出的2008年最佳iPhone程序中,排名第一的是来自谷歌的地图程序Google Earth,Twitter的iPhone手机客户端排名第七。
然而,随着更多开发者尤其是个人开发者的进入,一些开发者开始从App Store中获益,并被媒体大肆报道。例如, Freeverse公司开发的《Skee-ball》游戏在一个月内就赚得18.1万美元,而Freeverse开发和部署该游戏仅花费了两个月的时间。国内开发者139.ME团队的水族箱程序第一天的下载就实现了300美元的收入。
此后,App Store中应用程序的数量呈现出爆炸性增长。2010年8月,Objective-C已经进入了TIOBE的前十大编程语言排行榜,使用率达到3.15%,并且是增长率最快的语言。App Store中应用程序的数量,也从2008年底的1万个,增加到2009年底的10万个。截至2010年10月,App Store已经增加到30万个应用程序,下载量更是突破50亿。
这些惊人的数字,只能用奇迹来形容,这也让人不难理解:为什么iPhone开发会这样火爆。
然而,如果你现在正准备成为或者已经是一个iPhone开发人员,你也许知道,要想下载iPhone SDK,必须注册成为苹果公司的iPhone Developer(iPhone 开发人员)——这并不是免费的,你需要购买苹果公司的iPhone Development Program;否则你只能下载一个功能有限的iPhone SDK。
除此之外,由于苹果公司一贯坚持的“精品应用”策略,苹果公司没有开放iPhone的操作系统。实际上,在App Store上线以前,人们甚至无法在iPhone上安装程序——苹果公司通过App Store控制着iPhone应用程序的发布。如果你想让自己开发的程序安装在iPhone上,你必须购买iPhone Developer Program。
iPhone Development Program有两个版本:标准版和企业版。
标准版程序价格为99美元/年,它提供大量开发工具、资源和技术支持,支持可以通过苹果公司App Store发布应用程序。同时也支持在iPhone/iPod Touch/iPad(不仅仅是在模拟器)上调试代码。
企业版程序价格为299美元/年,支持开发企业专用的,在内部发布的企业应用程序。它不支持在苹果公司App Store销售和发布应用程序,但它支持不经苹果公司审核的应用程序发布方式。
标准版和企业版这两者的区别很像是IT界中“做产品”和“做项目”的提法。做产品依靠销售产品拷贝盈利,卖的拷贝数越多则赚的就越多,标准版程序也是如此,依靠下载数量盈利。而做项目并不需要销售产品拷贝,它为企业提供解决方案,做的企业越多则赚的越多,即企业版程序,不管有多少用户在下载(安装)和使用,每做一个项目(企业)收取的开发费用总是相对固定的。
网络资料中,介绍标准版IDP比较多,介绍企业版IDP相对较少,而iOS企业应用是本书的主题,与企业版程序有着直接关系,因此接下来详细介绍企业版程序(企业版IDP)。

1.3.2 Ad-Hoc与In-House发布

企业版IDP只支持两种应用程序发布方式,Ad-Hoc和In-House发布。尤其是In-House发布,是企业版IDP所独有的。它使用一种叫做“In House Distribution Provisioning Profile”的文件进行发布,不能发布到App商店进行销售,也不需要Apple的评审。你可以把In-House应用通过任何方式发布给你的企业员工、用户及你认可的其他任何人,尤其适合于企业应用的开发。
1.申请企业版IDP
首先,你需要有一个Apple ID,如果没有则需要事先申请一个。其次,你的企业需要拥有邓白氏编码。如果没有则需要进行注册。
邓白氏编码是美国联邦政府推荐使用的企业机构编码。可以看成是美国版的“组织机构代码”,只不过已经得到了联合国、澳大利亚政府、欧盟及美国政府的承认,成为了全球企业标准。
申请邓白氏编码在D&B公司的网站(英文)或者“华夏邓白氏”网站(中文)申请,在网站上提交注册申请后,等待1~2天,对方人员会跟你联系(Email)。如果英文沟通有问题,你可以在华夏邓白氏进行申请,他们会安排中籍文员跟你联系。
邓白氏注册服务有几个版本,收费情况也不一样。笔者一开始收到的邮件是“实地核实”的版本,报价15200/2年。后来经与北京苹果公司联系,只需要购买最基本的“标准版”即可,报价8600元/2年,有网友说2000~3000元/年,现在看来是不可能的。联系时一定要强调是购买标准版服务(最便宜),否则你可能会花冤枉钱。
收到邮件后,把申请表、协议打印出来,填好并加盖公章,然后加上企业营业执照副本、扫描为电子的,发给对方邮箱。其实还有一个就是汇款水单(小票),需要发送给对方——这一步其实可以省略,笔者申请时并没有Email汇款水单 ,只要对方确认汇款到账即可。
大约5~7天后,对方发来第2封邮件,告诉你贵公司的编码。此外还可以在你的公司网站上安装一个邓白氏电子标识——在网页上嵌入指定脚本,则会在页面上显示一个D&B图标,点击图标自动链接到D&B的网站并呈现你们公司的电子注册信息。
现在,可以申请企业版IDP了。登录苹果公司开发者网站,申请Apple Developer Program,注意要选择iOS Enterprise Program链接(在页面底部)。
点击Apply Now按钮,进入下一页,点击Continue按钮,再进入下一页,选择“Use an existing Apple ID”,点击Continue。进入下一页,输入你的Apple ID、密码,登录。
后面就是确认注册协议和填写你的公司资料了(英文)。内容最好同邓白氏申请时一样,否则对方会打电话来确认,要你更改。填写完公司资料,还要填写委托人联系资料。注意委托人应该有权代表公司签字(需要贵公司认可,他们会在电话里确认)。
提交资料后,会在注册的联系邮箱里收到苹果公司的邮件,内容大概是感谢你提交了申请,申请的编号是多少,公司名称、邮箱地址等,如果你想看评审流程,可以登录Member Center。接下来就是等待苹果公司的电话了。这个过程大概要2~3天,对方会安排懂中文的人员来电话,如果没什么问题,接下来(电话之后几分钟)会收到苹果公司的第2封邮件,大意是要你点击邮件中的链接,查看一个协议。
同意协议后,显示一个页面,大意是你所申请的国家不支持在线购买苹果公司产品(在线支付),需要你下载一个PDF格式的Purchase Form(见图1-1)。
将它打印出来,根据要求填好,然后传真给苹果公司。
注意,国内信用卡支持美元支付的一般是Visa卡(如招行)和Master卡(如交行),一定要找那种卡上印有“Visa”或“Master”标志的信用卡。
Cvc2 code是指信用卡背面的那串数字(7位)的末3位。
信用卡地址写申请信用卡时登记的地址。
如果传真机发送国际传真有麻烦,可将Purchase Form扫描后用Email发给亚洲苹果公司chinadev@asia.apple.com,请其转交给 Billing 团队。亚洲苹果公司几分钟后自动回复了一封邮件,并在信中附了一个业务流水号: Follow-Up: 149653xxx。下次再给亚洲苹果公司联系时,可以附上这个业务流水号。
然后3~5个工作日后,如果信用卡办理了账户余额变动短信提醒功能,则会收到扣费成功短信(注意美国和中国有时差,很可能是在半夜发送的)。登录邮箱后,果然收到了苹果公司的2封Email,1封是发票,上面有你的发票号码,单位报账的时候把这封邮件内容打印出来就可以了。另1封是激活邮件,告诉你现在你的IDP账号已经生效了,你点击那个login now按钮可以登录到member center,这时可以看到你的developer program overview的状态已经改变。同时,Peoples中会包含一个成员,这个成员就是你注册IDP时所绑定的开发者账号(Apple ID),同时也是该IDP的Agent(超级管理员,具有发布权限)。

2.制作开发者证书
(1)在本机生成证书请求CSR
从Dock栏的“应用程序”→“实用工具”中,打开“钥匙串”应用程序,修改偏好设置如图1-2所示。

选择菜单“钥匙串访问→证书助理→从证书颁发机构求证书”,如图1-3所示。
注意,如果此时密钥中的某个私钥处于选中状态,则菜单会变为“钥匙串访问→证书助理→用<私钥>从证书颁发机构求证书”,这样制作出来的CSR是无效的。

输入你的Email地址和名字,确保Email地址和名字与你注册为iOS开发者时登记的相一致。
选中Saved to Disk(保存到磁盘)单选按钮并勾选Let me specify key pair information(指定密钥对信息)复选框,然后点击Continue按钮,如图1-4所示。

当选择了Let me specify key pair复选框之后,会要求你指定文件保存位置。接下来按图1-5所示指定密钥对信息。
点击Continue按钮,即可生成CSR文件。一旦生成CSR,在“登录”钥匙串中会生成一对密钥对(一个私钥,一个公钥)。你可以在钥匙串的密钥栏中查看。

(2)提交CSR文件
用企业版IDP绑定的Apple ID( 跟制作CSR时要求输的可能不一致,这里是注册企业版时绑定的iOS开发者账号,即Agent)登录iOS Provision Portal 。
在Provision Portal页面中,依次点击“Certificates→Development中的Add Certificate”,进入图1-6所示的页面。

接下来点击左下角的Choose File按钮,选择所生成的CSR文件,然后点击Submit按钮。如果密钥长度未设置为2048,Portal会拒绝CSR。
提交CSR后,Team管理员(Agent)会收到一封提醒邮件,主题为 Certificate Request Requires Your Approval,提示你需要去同意该CSR。此时Agent需要登录Portal去同意该CSR。但实际上,Agent也可能根本不需要点击“同意”按钮,Portal几秒钟后就自动同意了——笔者遇到的情况就是这样的(可能笔者是用Agent提交CSR的)。
(3)下载并安装开发者证书
用提交CSR的Apple账号登录Portal。如果机器上未安装WWDR证书,请点击“Certificate →Distribution”中的链接“Saved Linked File to Downloads”,以下载WWDR证书,并通过双击WWDR证书文件进行安装。
在“Certificate→Development”中, 在Your Certificate下会列出当前有效的开发者证书。 点击Download按钮,即可下载到本机。下载后双击,即可安装到本机。可以在钥匙串“证书”一栏中查看到导入的开发证书。
Team 成员只能下载自己的iOS开发证书。Team管理员有权下载所有成员的公有证书。苹果公司不接受CSR中的私钥。私钥仅对创建者有效,并且必须存储在系统钥匙串里。
(4)保存私钥并迁移到其他系统
如果你在多台电脑上进行开发或者重装系统,那么把私钥存储在安全的地方是件很重要的事情。如果没有私钥,你无法在Xcode中签名代码并进行真机调试。
钥匙串在生成操作系统CSR时,就会在“登录”钥匙串中创建一个私钥。该私钥和你的用户账号绑定,如果重装操作系统导致该私钥遗失,则该私钥无法再次生成。如果你想在多台电脑上开发和调试,你必须将私钥导入到每一台机器上:
在钥匙串访问程序中,选择登录钥匙串的“密钥”。可以看到有许多密钥对,选择与你的开发者证书相对应的私钥(还记得创建CSR时要你输入的邮箱地址和名字吗?那个名字会显示在私钥的名字上)。然后选择菜单“文件→导出项目…”,将私钥保存为.p12格式(Personal Information Exchange)。当提示输入密码时,设置一个密码并记住它,它会在导入.p12文件时使用。现住,你可以把.p12文件拷贝到其他机器上并双击它进行安装,这时会提示你输入导出私钥时设置的密码。
这个私钥是重要的。如果你机器重装系统了(或者你想把开发环境迁移到另一台机器上),那么很可能需要重新安装开发环境,包括导入开发者证书。每个开发者证书都是和申请证书(提交CSR)时的私钥(私钥可以保存在.p12文件中)是绑定的。如果仅仅是导入了开发者证书文件而机器上没有对应的私钥,则这个开发者证书对这台机器是无效的。
3.设备ID
所谓设备ID(device ID又称UDID)是Apple 设备上的40位十六进制码,每台Apple设备的设备ID都是唯一的,Apple以此来识别每一台iOS设备。
我们通过在Provision Portal中录入设备的设备ID,可以允许开发者在指定真实设备上进行调试。在Provision Portal中最多允许输入100个设备ID。
因此,录入设备ID是后续制作Provision Profile的必需步骤(而Provision Profile又是真机调试的必需步骤)。
(1)获取设备ID
有两种获取设备ID的方式:
把Apple 设备(iPhone或iPod)连接电脑,打开Xcode(以4.2版本为例)的Organizer,如图1-7所示。

或者,把Apple 设备(iPhone或iPod)连接电脑,打开iTunes,如图1-8所示。

那个40位16进制的数字就是设备ID。
(2)添加设备ID
以Team管理员登录Provision Portal,点击Devices页面中的“Add Device”按钮,如图1-9所示,在其中进行以下设置:
Device Name:设备名称,输入一个描述该设备的名字。
UD ID:即设备ID。
点击Submit按钮即可。

4.创建App ID
App ID是识别不同应用程序的唯一编码。如果你的程序要连接Apple Push Notification服务(一种push通知),需要用到App ID。如果应用程序之间要共享钥匙串数据,也会用到App ID。总之,App ID在iOS开发中很重要。在这里App ID的最大用处是制作真机调试用的Provision Profile(对代码进行签名,它需要提供一个App ID)。
一个App ID由两部分构成:一个10位字符的Bundle Seed ID前缀,这个Bundle Seed ID由Apple分配,全球唯一,保证不会重复;一个Bundle Identifier后缀,这个Bundle Identifier由Team管理员指派,Apple建议用反域名规则命名这个Bundle Identifier。例如:8E549T7128. com.apple.AddressBook。其中,8E549T7128是Bundle Seed ID,com.apple.AddressBook是Bundle Identifier。
如果你写了一系列应用程序,它们共用相同的钥匙串(如共用密码),或者根本就不使用钥匙串访问,你可以只创建一个App ID,所有的应用程序都使用以星号结尾的App ID。这个星号就是通配符,只能用于App ID最后一个字符。例如,这个App ID可以是:R2T24EVAEE.com. domainname. 或者 R2T24EVAEE.
以Agent或Team 管理员登录Provision Portal,点击“App ID”页面中的“New App ID”按钮。如图1-10所示,在其中修改如下信息:
Description:给这个App ID一个名字。如果存在多个App ID,每个App ID需要一个易于识别的名称。
Bundle ldentifier:如前面所述,Bundle Seed ID是Apple分配的,其实这里只需要你输入Bundle Identifier。可以使用统配符*。

5.制作开发者Provisioning Profile
拥有了开发者证书(Development Certificate),只是表明你有权利在电脑上进行开发,在模拟器上运行程序,但你还不能在iPhone上运行你开发的程序。其实如果你只是在模拟器上调试程序的话,要不要开发者证书都无所谓,因为证书只是用来代码签名(Code Sign)的,如果在模拟器上运行的话,你可以选择不签名(don’t code sign)。
如果要在真机上调试就不一样了,没有这个Provision Profile,苹果设备无法安装、运行你开发的程序(这个Provision Profile也将随程序一同安装到iPhone上)。这个Provision Profile中记录了一些信息:开发者证书、开发者Apple ID、一系列设备ID(开发者可以使用哪几部设备进行调试——这些设备的设备ID要登录到Portal上)。
(1)创建开发者Provision Profile
登录Provision Portal,点击“Provisioning→Development”,点击New Profile按钮,修改以下信息:
Profile Name:输入Profile的名字,随意。
Certificate:选择开发者证书。
App ID:选择一个App ID。
Devices:设备ID列表。
点击Submit按钮,即会生成Development Provisioning Profile,如图1-11所示。

(2)安装Development Provision Profile
所有Team成员都可以下载Development Provision Profile。但只有Profile中记录了设备ID的设备以及iOS开发者证书所指定的开发者能够使用这个Profile。
在Portal的“Provisioning→Development”中,点击某个profile右边的“download”按钮。下载profile后,将下载到的文件拖曳到桌面Dock面板的Xcode图标上(或者直接拖到Xcode的Organizer中)。这会将profile文件拷贝到~/Library/MobileDevice/Provisioning Profiles目录。
(3)签名并调试
这需要用到两个文件:证书用于给代码签名,Provisioning Profile用于真机调试。
在Xcode (以4.2版本为例)中打开项目,选中 Target,打开info窗口,在Build Settings面板中找到“Code Signing Identify”,打开并点击“Debug”下面的“Any iOS Device”将弹出一个签名文档(即Provisioning Profile)选择列表,如图1-12所示。

提示:除了可以对“Debug”进行签名,我们还可以对“Release”、“Distribution”等进行签名。这里“Debug”、“Release”、“Distribution”指的是不同的编译版本,在Xcode里也叫做Schema。一个Schema是一种编译方案,代表了一个项目在编译时所采用的编译选项,包括编译器选项参数、环境变量、签名文档和编译脚本等。默认情况下,一个Xcode项目只有“Debug”和“Release”两种Schema,分别代表了调试时和发布时的不同编译选项。在Xcode里,这两种Schema是不一样的。因为程序员在开发调试过程中,对代码进行编译是非常频繁的,这种情况下,应该对编译速度进行一些优化,以节省编译时间,但同时运行效率就会较差一些。但对于发布版本就相反了,这时的编译器应当优先考虑在运行速度上进行优化,而编译速度就会有所下降。此外,你也可以自己加入一些定制的Schema,比如“Distribution”,从而对编译选项进行一些调优。
在弹出菜单中选择你要用于签名的Provision Profile(即先前在Portal中制作的Provision Profile),该签名应当和一个开发者证书对应。这个Profile就是前面安装的Development Provision Profile。
注意,有时候Xcode会自动根据当前连接的设备的设备ID选择一个有该设备调试权限的签名,比如一般是位于Automatic Profile Selector(灰色)条目下面的iPhone Developer项。这在大部分时候是适用的,但有时候Xcode的选择并不符合你的意愿。此时就需要手动修改签名。
例如,在图1-12中,Xcode自动选择了“Automatic Profile Selector”下面的“iPhone Developer(current matches 'iPhone Developer:Hongyan Yang...')”进行签名。这表明将用iPhone Developer“Hongyan Yang”的数字证书进行签名。一个证书可以绑定多个Provision Profile。在图1-12的例子中,“Hongyan Yang”的证书就会存在于许多Provision Profile中:My Development Profile、iOS Team Provisioning Profile 。在图1-12中,有的证书是灰色的,表明不能用于当前签名(可能是Provision Profile的IDs列表中没有包含调试设备,或者App ID不匹配,或者证书和私钥不匹配等原因)。
在Target的info面板(其实就是info.plist中的内容)中,还需要设置的Bundle Identifier。如果你的 App ID 是 A1B2C3D4E5.com.domainname. applicationname(我们在前面创建的App ID),那么Bundle Identifier可以是 com.domainname.applicationname(不需要填写Bundle Seed ID)。如果App ID使用了通配符,比如A1B2C3D4E5.com.domainname.*,则Bundle Identifier可以是com.domainname.<任意字符>。如图1-13所示(以Xcode 4.2为例)。
签名完成,你就可以在真机上运行程序了。点击Xcode工具栏左上角Scheme下拉按钮,从中选择Device→Debug,然后点击Build and Debug按钮,编译并在真机上运行程序。
(4)发布应用程序
发布应用程序需要使用发布证书(Distribution Certificate)。发布证书的制作,跟制作开发者证书的步骤是一样的,只不过使用的是Provision Portal的“Certificates→Distribution”功能。
把制作好的发布证书下载、安装到本机。

发布应用程序时使用的是“发布证书”,就如同开发时要使用“开发证书”一样。同理,发布时用的签名文档(即Provision Profile)也与开发时使用的不太一样。
企业版IDP有两种发布方式:In-House和Ad-Hoc。两种Profile制作步骤稍有区别。而前者(In-House方式发布)正是企业版IDP真正区别于其他版本的IDP所在。我们重点介绍In-House方式的发布。
6.制作In-House发布的签名文档
以Team Admin(Agent)登录Provision Portal,打开“Provisioning Distribution”页面,如图1-14所示。

进行如下配置:
Distribution Method:发布方式,选择In House。
Profile Name:Profile名称,用于区别多个Profile。
Distribution Certificate:选择要在Profile中绑定的发布证书。
App ID:指定一个已有的AppID。
Devices(optional):要绑定的device ID。因为In-House方式可以在任何Apple设备上发布,所以不需要设定Devices,这一项不可用。
点击Submit按钮,生成Profile。将Profile下载到本地进行安装。方法:把Profile文件拖曳到Dock上的Xcode图标。
7.制作Ad-Hoc发布的签名文档
以Admin或Agent登录Provision Portal。打开“Provisioning Distribution”页面,如图1-15所示。

与In-House方式大同小异,只不过发布方式选择Ad-Hoc,同时在Devices(optional)栏勾选要绑定的device ID,最多可选择100个。
点击Submit按钮,生成Profile,将Profile下载到本地进行安装。
8.编译发布版本
打开你的项目。在Target的Builder Settings面板中,找到Code Signing Identity下面的Release项。将Any iOS SDK指定为你的发布证书(Distribution Certificate),如图1-16所示。

切换到Info面板,在Identifier栏输入Bundle Identifier。该Bundle Identifier应根据App ID填写。
选择菜单“Project→Edit Scheme”,在Profile的Info窗口中,将Build Configuration选择为Release,如图1-17所示。
在菜单栏选择“Product→Archive”。
如果Archive是灰色的,请连接设备,在Scheme按钮中选择所连接的iPhone,如图1-18所示。

这时再次选择“Product→Archive”,Archive就变成可用的了。
点击“Product→Archive”,编译成功后,会弹出Organizer窗口,如图1-19所示。

点击Share按钮,又会弹出另一个窗口,如图1-20所示。

然后,点击Next按钮,会弹出新窗口选择Archive保存路径,如图1-21所示。注意,不要勾选“Save for Enterprise Distribution”选项。

填入文件名,选择保存路径,点击Save按钮,文件会保存在指定地方。打开Finder,你可以在指定目录下看到生成的.ipa文件。
9.安装应用程序
以Ad-Hoc或In-House方式发布的应用程序,可以将.ipa文件直接发送给用户。用户可以用两种方式安装:使用iTunes,或者使用iPhone配置实用工具。
(1)使用iTunes
用户将压缩包中的.ipa文件拖到iTunes的“资料库→应用程序”下,然后和iPhone/iPod进行同步。
(2)使用iPhone配置实用工具
iPhone配置工具是完全免费的,你可以从这里下载:
http://support.apple.com/kb/DL926?viewlocale=zh_CN
安装后会在“应用程序/实用工具”中生成一个快捷方式“iPhone配置实用工具”。
同样,将iPhone/iPod连上电脑,打开“iPhone配置实用工具”,将.ipa文件拖放到“iPhone配置实用工具”的“资料库→应用程序”下,然后选中你的iPhone/iPod,在右边“安装或删除应用程序列表”中,点击某个应用程序右边的“安装”按钮进行安装。
10.问题及错误
如果Xcode出现Code sign错误:
Code Sign Errors: profile doesn’t match any valid certificate/private key pair in the default keychain
同时在Organizer中出现下列提示:
A valid signing identity matching this profile could not be found in your keychain
则需要把钥匙串中的所有证书和密钥删除,然后重新请求证书、修复provision profile、下载并安装,一般可以得到解决。

1.3.3 OTA无线部署

所谓OTA(Over The Air),是苹果公司在iOS 4.0中加入的一种新的企业部署方式,即iOS 4的无线部署。无线部署是完全脱离iTunes的发布程序的一种方式。 苹果公司扩展了iOS的Safari的功能,使得iOS企业应用可以通过Safari浏览器进行部署。Safari对URL地址中的特殊协议itms-services进行识别并自动下载ipa安装包,并在下载完成后调用iOS操作系统的应用程序安装界面(iTunes)进行安装。
“无线部署”专用于企业部署,包括Ad-Hoc和In-House部署,所以这里你必须使用这两种provision profile 文件。下面介绍如何在Xcode(以4.2版本为例)中进行OTA部署。
OTA部署仍然使用“Product→Archive”菜单的功能(正如1.3.2节下面的“8. 编译发布版本”节所描述)。但在选择保存路径这一步(如图1-21所示步骤),注意勾选“Save for Enterprise Distribution”选项。这样将出现OTA部署选项,如图1-22所示。

需要填写的各项设置意义如下:
Application URL:你的.ipa文件将部署到服务器的哪个位置。当用户通过Safari安装你的企业应用时,这个URL应指向.ipa文件所在的地址,必填。
Title:企业应用名称,必填。
Subtitle:子标题,可选。
Large Image URL:大图标(512512)所在的URL。大图标用于在iPad上安装时显示应用程序图标,可选。
Small Image URL:小图标(5757)所在的URL。大图标用于在iPhone上安装时显示应用程序图标,可选。
Add Shine Effect to Image:会在大/小图标上加上一个光照效果,可选。
填写完后,点击Save按钮。Xcode会在硬盘上产生一个.ipa文件和一个.plist文件。这两个文件都OTA部署所必需的。其中.plist文件是一个XML文件,保存了你刚才填入的那些配置选项。
将上述两个文件和图标文件(如果有的话),放到Web服务器上。注意,.ipa文件和图标文件所放的位置应该和你在图1-22界面中配置的内容一致。至于.plist文件,你可以让它和.ipa文件放在一起,也可以单独放在另外一个地方。
另外制作一个html文件,如install.html,内容如下:

<html>
<head><title>TextGlowDemo</title></head>
<body>
<ul>
    <li>
<a href="http://10.180.120.235:8080/AnyMail/InHouseProvisionProfile.
         mobileprovision"> Provisioning File</a>
</li>
    <li>
<a href="itms-services://?action=download-manifest&url=http://10.180.120.235:8080/
         AnyMail/GlowDemo.plist">
                install GlowDemo</a>
</li>
</ul>
</body>
</html>

主要是两个标签。第一个标签是Provision Profile文件的超级链接,因为在iPhone上安装应用程序之前,必须先安装Provision Profile文件,所以这个链接是有必要的。第二个是.plist的超级链接。
注意:在第2个
标签中,href属性的“itms-services://?action=download-manifest&url=”是固定的(后面的跟着.plist文件的真实URL地址)。“itms-services://?action=download- manifest&url=”不能改成其他内容,否则Safari不会调用安装程序。
把这个HTML文件放在Web服务器上,然后在iPhone上用Safari访问这个HTML文件地址,你将看到如图1-23所示的页面。

首先点击Provisioning File链接,iOS提示你要安装该预置描述文件,根据提示安装就可。
然后点击install GlowDemo链接,Safari会开始下载.ipa包,当下载完成会立即启动系统安装程序进行安装。
注意:如果iPhone上已经安装有该应用程序,则会进行覆盖安装。
这样,通过OTA部署,不再需要用户将iPhone和 PC同步的繁琐步骤(利用iTunes)。OTA部署直接利用iPhone的无线通信功能(WiFi网络或移动网络)进行应用程序部署(或者在线更新),显得更加灵活和方便。

时间: 2024-11-02 22:22:29

《企业级ios应用开发实战》一1.3 iOS企业应用程序的发布的相关文章

《企业级ios应用开发实战》一导读

前 言 为什么写这本书 随着我国3G网络和移动互联网的兴起,许多传统的企业应用正在从桌面向移动终端扩展,移动办公.移动营销.移动作业等需求日渐强烈. 有迹象表明,传统的互联网正在向移动互联网发展.根据摩根士丹利发布的全球互联网发展趋势报告(Mary Meeker 2010)显示:全球互联网发展趋势正在由PC-Internet向Mobile-Internet转变,手机在某种意义上已经主导着互联网的发展,新兴的下一代互联网,即Mobile 2.0正在崛起,这完全得益于移动通信技术的迅猛发展.这不仅仅

《企业级ios应用开发实战》一1.2 iOS企业应用程序的架构

1.2 iOS企业应用程序的架构 本书把iOS企业应用定义为传统企业应用向iOS手机终端的顺延和扩张.在此定义下,iOS企业应用由服务端和iOS客户端构成,二者间通过3G移动互联网(CDMA/TD/WCDMA)连接或通信. 1.2.1 服务端 服务端(企业网络或Web服务)实际上为iOS企业应用提供企业数据和服务.如果把iOS客户端看做是前端应用,则服务端就是后台服务.服务端向前端提供一系列访问传统企业应用的接口,也可以为前端提供企业数据库和业务系统的访问.因此,iOS企业应用的服务端可能有两层

《Swift iOS应用开发实战》——1.5 iOS模拟器

1.5 iOS模拟器 iOS模拟器是一个运行在Mac上面的应用程序,它允许我们在不使用iOS真机设备的情况下调试所编写的程序项目.它属于iOS SDK的一部分,所以在安装Xcode的时候会直接被装入Mac系统之中.当我们在Xcode中运行应用程序时,可以选择项目是在模拟器中运行还是在真机上面运行.如果选择模拟器,则Xcode会在成功编译代码以后自动将其打开. 下面来设置HelloWorld项目的运行设备. 1)点击工具栏中停止按钮右侧的Scheme字段,(项目名称右侧,">"后面

《Swift iOS应用开发实战》——1.1初识Swift

1.1初识Swift Swift是苹果在WWDC 2014所发布的一门编程语言,用于开发iOS和OS X应用程序. 2010年7月LLVM编译器的原作者暨苹果开发工具部门总监克里斯·拉特纳(Chris Lattner,就是在WWDC 2014大会上亲自演示Swift代码的那位仁兄)开始着手开发Swift语言,一直到2014年6月发布,Swift大约经历了4年的开发期.在WWDC 2014大会中,苹果宣称Swift的特点是:快速.现代.安全和具有交互性. Swift的处理速度非常快.在WWDC上,

《Swift iOS应用开发实战》——2.1为移动平台开发应用

2.1为移动平台开发应用 如果之前根本没有为Cocoa或它的前身NeXTSTEP开发过应用程序,你可能会感觉到在最初使用Cocoa Touch(iOS的应用程序框架)开发iOS应用程序时,之前所学的所有程序语言(比如Java..NET)在这里都派不上用场,时常处于一头雾水的混沌状态.这是初学者在学习时的正常状态,你根本不用害怕这种状态,只要坚持下去就会慢慢适应.本书假定你已经具有面向对象的开发经验,以及初步掌握了Swift语言的相关知识,这些经验和知识对于编写iOS应用程序是非常重要的.在为移动

《Swift iOS应用开发实战》——第2章 搭建计算器的界面

第2章 搭建计算器的界面 作为一名开发者,有的时候你可能会听到身边的人在指着手机不停抱怨:"如果有这样一款应用该多好--"是呀,当一个不经意的想法被你变成现实的时候,你所得到的不仅仅是经济方面的利益,更多的是那种经历,那种从无到有,从幼稚到成熟的过程,而经历和过程无比珍贵.通过本书的学习,你将学会如何创建基于iOS平台的应用程序,并且通过对程序的改进,你完全有可能开发出一款在App Store上有百万用户下载的应用,但"千里之行始于足下",让我们一起先从本书的第一个

《iOS应用开发》——1.1节iOS系统简介

1.1 iOS系统简介 iOS应用开发 如果这是你第一次接触iOS开发,欢迎你来到一个激动人心的新世界.iOS阵营提供了一些强大的设备待你探究.尤其是iPhone,它聚集了很多令人兴奋的技术,包括持续在线的因特网.地理定位.运动传感,以及照相功能.就在不久的过去,开发者们如果要尝试这些技术,要么需要自己创建定制的硬件,要么花好几万美元购买.而现在你可以将所有这些技术整个装进你的口袋并且随身携带. iPhone的硬件带来了先前无法想象的机会.革命性的新型社交网络应用程序占主导地位,地理定位应用已经

《企业级ios应用开发实战》一2.3 Cocoa Touch 框架简介

2.3 Cocoa Touch 框架简介 Cocoa Touch框架是进行iPhone应用程序开发工作的主要框架,主要包括UIKit和Foundation(NS)框架,这些库统称为Cocoa Touch框架.该框架完全是面向对象的,它是Cocoa框架的子集. 注意:Cocoa框架早先是用于Mac OS X上的一个面向对象的应用程序快速开发(Rapid Application Development,RAD)框架,包含了Foundation和App Kit框架,可用于开发Mac OS X系统的应用

《企业级ios应用开发实战》一第2章 iOS开发框架简介

第2章 iOS开发框架简介 本章首先介绍苹果操作系统iOS的起源.发展及构成,然后对iOS开发框架Cocoa Touch进行介绍.Cocoa Touch(或Cocoa)是多个开发框架的集合,由多个层级的子框架构成.最后介绍苹果开发工具包iOS SDK及开发环境的搭建.