本文共 5926 字,大约阅读时间需要 19 分钟。
为什么写这本书
随着我国3G网络和移动互联网的兴起,许多传统的企业应用正在从桌面向移动终端扩展,移动办公、移动营销、移动作业等需求日渐强烈。有迹象表明,传统的互联网正在向移动互联网发展。根据摩根士丹利发布的全球互联网发展趋势报告(Mary Meeker 2010)显示:全球互联网发展趋势正在由PC-Internet向Mobile-Internet转变,手机在某种意义上已经主导着互联网的发展,新兴的下一代互联网,即Mobile 2.0正在崛起,这完全得益于移动通信技术的迅猛发展。这不仅仅是一场由最新数码科技与网络技术导致的变革,还是传统企业应用从Internet向移动互联网转移的前提和诱因。与PC相比,移动终端的这种全新用户体验是不可替代的,在一定程度上吸引了人们从桌面向移动终端的转移。而且,移动互联网也凭借着其出色的业务吸引力和资费吸引力,成为人们生活中不可或缺的一部分。然而,机遇与挑战并存。对于企业而言,能否将自己的企业应用向移动互联网扩展,仍然存在着巨大的风险。诸如:用户体验改变、企业信息安全和企业机密泄露、移动应用开发中存在的技术风险等。以苹果iOS为代表的移动应用开发正方兴未艾。iPhone和iPad正式进入中国的时间其实还不到3年(iPhone于2010年7月正式在中国香港上市),国内开发者在苹果商店上淘金的时间比这要早些,但绝对不会超过4年。实际上,App Store 拥有的历史还不到5年(App Store正式上线时间是2008年7月11日)。所以说,iPhone 应用开发仍然有着无限的潜力,称为“历史”恐怕为时尚早。因此,作者选择了以iOS为目标平台的企业移动应用开发作为本书讲述的主题。作者于2009年起开始接触iOS开发。对于一个多年奋战在企业应用开发第一线的开发人员来说,iOS企业开发是一个全新的领域。完全陌生的Mac OS X操作系统,别扭的Xcode IDE和Interface Builder,古怪的iOS……由于不知道什么是开发证书和代码签名,甚至在第一次调试我的3.5英寸屏幕的iTouch时,都是充满了坎坷。当我历尽千辛万苦,终于逐渐步入iOS开发这座大门。然而,却又面临新的问题:“企业应用是否能向iOS平台进行迁移?”从我第一天接到任务起,这样的怀疑就在我心中存在。iOS实在是太封闭了,相对于Android这样的开放平台,iOS 平台对企业开发人员的限制实在是太多。而且,App商店始终只是游戏开发者的天堂,90%以上的个人开发者把自己的目光盯在了游戏、娱乐等个人应用领域,企业应用根本无法登上App商店的大雅之堂。原因也很好理解,企业应用不会为苹果公司带来可观的利润分成,App商店的盈利模式是基于应用下载量的。一个企业应用会有多少用户?几百万?几千万?不,大多数企业应用的用户量不会超过5位数。没有庞大的用户群,就不会给App商店带来丰厚的利润分成。实际上,我第一次向App商店提交一个企业应用时,被无情地拒绝了。苹果公司给的理由很直白:“你的应用只针对有限的用户群”,换句话说“苹果将无利可图”。幸好苹果公司提供了“企业开发程序”(企业版IDP),虽然购买“企业开发程序”需要299美金一年,但对于一个真正决心将企业应用向iOS 移动终端扩展的企业来说,还是负担得起的。“企业开发程序”不需要苹果公司审核,使用“企业开发程序”部署应用不需要经过App商店,企业可以任意分发给自己的用户,苹果公司也不会找你要一分钱。可以预料,在将来一段时间内,国内的iOS个人应用开发者将不断向企业开发领域转移。实际上,苹果商店中个人应用的数量已经饱和,开发者的生存空间将逐渐变得狭小。大量的同质竞争直接导致了App商店的生态环境恶化,同类应用竞争激烈。为了保持 App 商店的竞争力和盈利模式不趋于低质化,苹果公司今后对商店应用的审核将越来越趋于严格,开发者想在商店中获利和生存的难度将越来越高。国内的公司及个人开发者会逐渐将目光转移到位于App商店生态圈之外的企业应用,iOS企业应用将成为今后新的利润增长点。最近,企业移动应用开发出现了一些新的趋势。最新的企业移动应用,有从 Native App(即本地代码)向云发展的趋势,比如 HTML5、虚拟桌面。HTML 5 充分利用移动终端的浏览器(如Safari或IE)和网络连接能力,来访问企业服务,并实现“一次开发,跨平台共享”的目的。而虚拟桌面则利用“数据中心”进行桌面的扩展,将客户端的数据、资源和图像放到了“云”上,iOS 客户端则通过网络访问个人桌面。虚拟桌面一般作为企业的“云计算”解决方案进行实施,市场上比较成熟的产品主要来自VMWare、Citrix、Microsoft和Oracle等几大厂商,它跟开发人员没有太大的关系。还有一种趋势就是“服务器配置+中间代码+本地代码”。开发人员在服务器上以配置的方式产生出中间代码,然后服务器将中间代码编译为多个平台的本地代码(iOS、Android、Sybian、Windows),然后分别部署,以此实现跨平台的目的。这些趋势的出现,从一定程度上试图解决当前本地代码开发(iOS开发、Android开发)的弊端,但效果还难以令人满意,比如都有性能下降、用户体验差、网络带宽占用大等缺点。因此,就目前来说,移动应用开发仍然是以本书介绍的本地代码开发为主流。本书是作者多年开发经验的总结,很多内容来自作者在CSDN上的博客,书中不少内容是经验之谈。本书根据iOS操作系统更新频繁的实际情况,针对新的SDK版本进行了内容上的调整(本书内容适用于SDK 4.0~5.0,本书所有代码在Xcode4.3下编译通过)。在介绍每一种SDK框架的同时,注重扩展,在继承的基础上进行创新,而不是一味复制、粘贴代码。
主题明确,以“iOS”和“企业开发”为主题, 但并没有将二者割裂开来,而是将二者紧密联系、互相呼应。首先由浅入深介绍了整个SDK框架层次,包括Objective-C语言简介、SDK的构成、Foundation框架、UIKit框架、QuartzCore、CoreAnimation以及其他第三方扩展框架,然后对在企业应用中一些需要特别讨论的方面(如安全、网络、APN、多线程等内容)进行专门的论述。撇开企业开发的特色不谈,本书也完全可以作为一本iOS开发的经典教材。
理论和技术兼顾。许多iOS开发书籍,轻理论,重技术,往往只告诉你怎么做,而不告诉你为什么要这样做,难以让读者在理解的基础上加深记忆。而本书以理论为纲,以技术为体,从基本理论到具体使用的技术都一一道来,不仅告诉你怎么做,而且将每一种技术的来龙去脉阐述清楚。在讲解具体技术的同时,不时穿插着小的知识点,让读者进一步拓宽相关的背景知识。详细分析代码,实用性强。作为编程类书籍,免不了有大量的代码。但本书对多数代码都进行了阐释,重点内容还会有专门的标注,如“提示”、“注意”等,以提醒读者注意,或者及时回顾前面的知识点。本书中的每一个示例程序,都收录到本书的随书光盘中。所有的程序都经过作者认真调试,可以直接运行。本书适用于以下读者:
从未接触过Objective-C、从其他语言转向iOS开发、有一定面向对象编程基础的程序员。正准备转向企业移动应用开发的 iOS 应用程序开发人员 。这是一本讲述iOS和企业应用开发相结合的书,介绍如何在iOS上进行企业应用的开发及分发、部署。本书从一个企业应用开发者的角度出发,以实现企业移动办公和3G应用为宗旨,介绍如何充分发挥苹果新一代操作系统iOS的优势和iPhone手机的软、硬件特性将企业应用扩展到iOS平台。在最后一章以step by step的形式介绍了一个实战项目,以达到理论与实践结合的目的。本书也对苹果Cocoa框架和其他第三方开源框架进行了深入介绍。
针对本书面对的两种主要读者,我们建议如下:对于本书第一类读者,即“从未接触过Objective-C、从其他语言转向iOS开发、有一定面向对象编程基础的程序员”,本书提供了一个快捷的Objective -C语言入门,以及一个简单易读而又务实详尽的iOS SDK入门教程;本书的全部章节都将有助于读者尽快对Objective -C及iOS SDK有一个全面的了解,并迅速跨入iOS开发的大门。对于本书第二类读者,即“正准备转向企业移动应用开发的 iOS 应用程序开发人员”,可以省略阅读本书部分章节,例如第2、3、4、5、6各章,但本书其他一些章节具备了良好的参考价值,例如:第10章以后的各章,在这些章节中,有部分内容是其他参考书中难以见到的,可以有选择地阅读相应章节。基础篇
第1章介绍了企业应用的概念,什么是iOS企业应用,iOS企业应用的框架及构成,特别是对于苹果iOS企业证书申请和iOS企业应用程序的部署方式(In-House、Ad-Hoc、OTA)进行了详细的介绍。第2章介绍iOS SDK,包括其框架和构成。iOS SDK是iOS开发中最为重要的工具和武器,每个iOS开发人员都必须熟悉并深刻理解它。第3章介绍iOS开发语言Objective-C。对于没有接触过这种语言的读者,将在本章对Objective-C有一个全面的理解。本章从两个方面对Objective-C进行了介绍,即Objective-C的C语言特性和面向对象特性。也对Objective-C的一些现代语言特性,如块编程(函数式编程中的主要内容)、反射(运行时支持)和可变参数也进行了介绍,这些内容在其他书籍中是比较罕见的。第4章介绍Xcode IDE。从Xcode 4.0开始,苹果对其功能和界面进行了全新的设计,把Interface Builder完全整合到Xcode中,使程序员的开发效率更高。第5章单独对Xcode中的Interface Builder 进行了进一步介绍,特别是Assistant Editor的出现,与之前的版本相比,大大简化了开发人员进行各种连接(IBOutlet和IBAction)的操作。第6章介绍UIKit以及UIKit中包含的一系列最基本的UI组件,此外,介绍了如何在UIKit的基础上进行扩充,创建自己的自定义组件库。企业应用篇第7章到第10章,依次从网络、XML/Json、数据存储、安全这几个方面进行介绍。这些内容中,有相当一部分是企业开发人员早已熟知的领域(如网络、XML/Json、数据存储和安全)。这些章节结合iOS自身的特点进行详细的阐述,包含安全沙箱、嵌入式数据库以及iOS安全框架等内容。第11章介绍Cocoa的多媒体、Quartz 2D和Core Animation框架。第12章介绍Cocoa Touch 特有的多点触摸和手势识别。第13章介绍如何利用iPhone的多语言支持实现应用程序的国际化。第14章涉及两个方面:传统的线程编程和并行编程GCD(Grand Central Dispatch)。在企业应用中,免不了要使用多线程。前者是传统的异步编程技术,直接与操作系统底层的线程打交道;后者是iOS 4.0以后新的异步编程技术,以一种函数式编程的方式,达到让系统自动进行线程管理的目的,从而避开了线程编程的复杂性。第15章介绍通知、本地通知和远程通知。通知是多个对象间进行对话的机制,但耦合性低于直接的方法调用。本地通知和远程通知是两种不同的进程唤醒技术,前者由系统来唤醒,后者通过RPC(Remote Process Calling)唤醒。第16章介绍开源框架Core Plot。Core Plot是著名的2D图形框架,用于绘制散点图、柱状图和饼图等图表。第17章针对iOS特有的硬件特性进行介绍,如通讯簿、相机、加速计和GPS。实战篇第18章,介绍“企业APN”在企业中的应用,以及使用“企业APN”网络对iOS客户端的一些特殊要求。该章实际上包含了一个实战项目,即一个简单的APN切换工具(同时也提供了简单的网络状态检测)。在这个实战项目中,涉及了广泛的内容和前面诸多章节中介绍的知识,诸如后台任务、配置描述文件、BSD Socket编程、网络检测、Safari阻塞和并行编程GCD。第19章以案例导航的方式介绍了一个实战项目,指导读者从用户的实际需求出发,结合本书中讲述过的理论知识和技术,开发一个完整的iOS邮件客户端,使读者对企业应用的开发有直观的认识。第4章 Xcode集成开发环境
4.1 创建第一个Xcode应用程序4.2 构成应用程序的那些东西4.2.1 Info.plist 和 pch 文件4.2.2 Xib 文件4.2.3 资源文件4.2.4 源代码文件4.2.5 项目和目标4.2.6 Frameworks4.2.7 应用程序的文档目录和临时文件夹4.3 了解Xcode为我们做了些什么4.3.1 main.m4.3.2 应用程序委托4.4 在Xcode中添加View Controller4.5 在Xcode中添加框架4.6 Xcode 使用技巧4.6.1 自动完成4.6.2 查找和替换4.6.3 快速帮助4.6.4 快照4.6.5 书签4.6.6 使用导航条4.7 本章小结转载地址:http://wipxx.baihongyu.com/