第1章 开篇综述 1
1.1本书结构 1
1.2本书中的约定 2
1.2.1实例代码约定 2
1.2.2图示的约定 3
网络基础篇 9
第2章 沟通无限——苹果的网络 9
2.1网络结构 9
2.1.1客户端服务器结构网络 9
2.1.2对等结构网络 9
2.2基于Socket的C/S结构网络通信 10
2.2.1 Socket概念 10
2.2.2 Socket编程 11
2.2.3实例:NSStream&CFStream实现TCP Socket服务器端 12
2.2.4实例:NSStream&CFStream实现TCP Socket客户端 18
2.3 Bonjour服务发现 22
2.3.1发布服务 22
2.3.2解析服务 23
2.3.3查找服务 24
2.3.4实例:基于服务发现的Socket通信服务器端 25
2.3.5实例:基于服务发现的Socket通信客户端 29
2.4对等结构网络 33
2.4.1使用Game Kit开发对等结构网络应用 33
2.4.2实例:基于蓝牙对等网络通信 34
本章小结 39
第3章 数据交换格式 40
3.1 XML数据交换格式 41
3.1.1文档结构 42
3.1.2 XML文档解析与框架性能 43
3.1.3实例:MyNotes应用XML 45
3.2 JSON数据交换格式 55
3.2.1文档结构 55
3.2.2 JSON数据编码/解码与框架性能 56
3.2.3实例:MyNotes应用JSON解码 58
本章小结 61
云服务篇 65
第4章 使用Web Service——基于客户端服务器结构网络通信 65
4.1 REST Web Service 66
4.1.1 HTTP和HTTPS协议 66
4.1.2同步GET方法请求编程 67
4.1.3异步GET方法请求编程 72
4.1.4 POST方法请求编程 74
4.1.5实例:REST Web Service实现的MyNotes应用 75
4.2 SOAP Web Service 81
4.2.1 WSDL概念 81
4.2.2 SOAP协议 83
4.2.3实例:SOAP Web Service实现MyNotes应用 84
4.3 ASIHTTPRequest框架使用 94
4.3.1安装和配置ASIHTTPRequest框架 94
4.3.2同步请求 96
4.3.3异步请求 99
4.3.4实例:请求队列应用 101
4.3.5实例:上传数据应用 104
4.4反馈网络信息改善用户体验 106
4.4.1 iOS 6表视图刷新控件的使用 106
4.4.2使用等待指示器控件 109
4.4.3使用网络等待指示器 111
4.4.4使用MBProgressHUD等待指示器 113
本章小结 116
第5章iCloud编程 117
5.1苹果云服务——iCloud 117
5.2配置iCloud 120
5.2.1创建App ID 121
5.2.2创建配置概要文件 124
5.3 iCloud数据存储 126
5.3.1 iCloud键值数据存储 126
5.3.2 iCloud文档存储 126
5.3.3 iCloud存储注意事项 128
5.4 iCloud键值数据存储编程 129
5.4.1实例:iCloud键值数据存储设计 129
5.4.2配置Xcode工程 130
5.4.3代码实现 131
5.5 iCloud文档存储编程 133
5.5.1实例:iCloud文档存储编程设计 133
5.5.2配置Xcode工程 134
5.5.3自定义文档类 135
5.5.4获得iCloud文档目录 136
5.5.5查找Ubiquity容器中的文档 136
5.5.6保存文档 139
5.5.7解决文档冲突 140
5.6在iCloud下使用Core Data技术 142
5.6.1实例:iCloud Core Data编程设计 142
5.6.2使用Xcode创建Core Data工程 143
5.6.3创建持久化存储协调者 144
5.6.4创建被管理的对象上下文 147
5.6.5合并iCloud与本地数据 148
本章小结 149
社交篇 153
第6章 社交网络编程 153
6.1苹果公司的社交网络 153
6.1.1设置账户信息 153
6.1.2社交网络编程API 155
6.2 iOS 6分享列表——UIActivityViewController 155
6.2.1内置活动列表项 155
6.2.2自定义活动列表项 158
6.3撰写视图控制器——SLComposeViewController 161
6.4编写自己的社交网络客户端 164
6.4.1实例:编写新浪微博客户端 168
6.4.2实例:编写Twitter客户端 175
6.4.3实例:编写Facebook客户端 178
本章小结 179
第7章 定位服务与地图应用开发 180
7.1定位服务 180
7.1.1定位服务编程 181
7.1.2地理信息反编码 185
7.1.3地理信息编码查询 187
7.1.4关于定位服务的测试 189
7.2使用iOS 6苹果地图 192
7.2.1显示地图 193
7.2.2添加标注 195
7.2.3跟踪用户位置变化 199
7.3使用程序外地图 201
7.3.1调用iOS 6苹果地图 201
7.3.2调用谷歌Web地图 205
7.4使用本地化的百度地图 206
7.4.1百度地图的安装与初始化 206
7.4.2显示地图 211
7.4.3地理信息编码与反编码 213
7.4.4添加标注点 216
本章小结 218
电子商务篇 221
第8章 发布你的促销信息——推送通知 221
8.1苹果中究竟有多少个“通知” 221
8.1.1广播通知 221
8.1.2本地通知 222
8.1.3推送通知 226
8.2配置推送通知 227
8.2.1证书签名请求 228
8.2.2配置应用推送通知 229
8.2.3生成SSL证书 229
8.2.4为SSL证书导出p12文件 231
8.3 iOS客户端编程 233
8.3.1配置Xcode工程 233
8.3.2代码实现 234
8.4推送服务端编程 236
8.4.1使用PHP实现推送服务 236
8.4.2使用Java推送服务 238
本章小结 239
第9章 报刊杂志——Newsstand应用编程 240
9.1 iOS 5中Newsstand应用 240
9.2 Newsstand应用编程 241
9.2.1配置Newsstand 241
9.2.2使用Newsstand Kit API 243
9.3实例:MyNewsstand杂志应用 245
9.3.1实例设计原型草图 245
9.3.2实例设计类图 246
9.3.3初始化杂志画面 247
9.3.4主动式下载资源 253
9.3.5后台下载资源 256
9.3.6断点续传 260
9.3.7读取杂志内容 261
本章小结 263
第10章 应用内购买 264
10.1应用内购买实例设计 265
10.2测试环境搭建 265
10.2.1添加测试用户 266
10.2.2创建App ID 267
10.2.3添加空白应用 268
10.2.4为应用添加购买产品信息 268
10.3服务器产品类型应用内购买 272
10.3.1工作流程 272
10.3.2实例:应用内购买iOS客户端 274
10.3.3实例:PHP实现的服务器端 285
本章小结 289
第11章iOS 6 Passbook应用开发 290
11.1 Passbook与Pass 291
11.1.1 Pass的5种风格 292
11.1.2 Pass的内部结构 294
11.2设计Pass 295
11.2.1 pass.json文件结构 295
11.2.2 Pass类型和字段 296
11.2.3二维条形码 299
11.2.4位置与时间 300
11.2.5本地化 300
11.2.6图标和图片的使用 301
11.3创建Pass 303
11.3.1创建Pass证书 303
11.3.2数字签名与打包Pass文件 305
11.4发布Pass 307
11.4.1 E-mail发布 307
11.4.2 Web网站发布 309
11.5 Pass Kit编程 310
11.5.1实例:MyPass实例设计与说明 311
11.5.2准备工作 311
11.5.3访问Passbook 314
11.5.4添加与替换Pass 316
11.5.5删除Pass 318
本章小结 320
实战篇 323
第12章 重构MyNotes应用——iOS网络通信中的设计模式与架构设计 323
12.1移动网络通信应用的分层架构设计 323
12.2基于委托模式实现 324
12.2.1网络通信与委托模式 324
12.2.2异步网络通信中委托模式实现分层架构设计 324
12.2.3类图 325
12.2.4时序图 327
12.2.5数据持久层代码实现 330
12.2.6业务逻辑层代码实现 334
12.2.7表示层代码实现 335
12.3基于观察者模式通知机制实现 341
12.3.1观察者模式的通知机制回顾 341
12.3.2异步网络通信中通知机制实现分层架构设计 342
12.3.3类图 342
12.3.4时序图 344
12.3.5数据持久层代码实现 347
12.3.6业务逻辑层代码实现 348
12.3.7表示层代码实现 349
本章小结 355
第13章iOS敏捷开发项目实战——价格线酒店预订iPhone客户端开发 356
13.1应用分析与设计 356
13.1.1应用概述 356
13.1.2需求分析 356
13.1.3原型设计 358
13.1.4架构设计 358
13.2 iOS敏捷开发 359
13.2.1敏捷开发宣言 360
13.2.2 iOS可以敏捷开发 360
13.2.3 iOS敏捷开发一般过程 361
13.3任务1:创建应用基本工作空间 363
13.3.1迭代1.1创建业务逻辑层工程 363
13.3.2迭代1.2创建表示层工程 364
13.4任务2:业务逻辑层开发 366
13.4.1迭代2.1编写搜索酒店的业务逻辑层类 366
13.4.2迭代2.2编写房间查询业务逻辑类 371
13.5任务3:表示层开发 376
13.5.1迭代3.1根据原型设计初步设计故事板 376
13.5.2迭代3.2搜索酒店模块 377
13.5.3迭代3.2.1选择城市视图控制器 378
13.5.4迭代3.2.2选择关键字视图控制器 382
13.5.5迭代3.2.3选择价格和日期拾取器 385
13.5.6迭代3.2.4酒店搜索视图控制器 386
13.5.7迭代3.2.5酒店搜索列表视图控制器 395
13.5.8迭代3.3房间查询模块 402
本章小结 404