iOS 设备
用户
登录认证
视图 View 用户接口
控制器 Controller 应用程序接口模型 ModelJSON 数据解析
模块
网络模块
数据缓存服务器
SQLite3
图1 客户端结构图
Fig. 1 The client structure diagram
(1) 性能:优化内存管理,进行数据缓存以提高系统响应速度,并尽量减少客户端对服务器的请求次数;
(2) 网络通信:客户端和服务器之间通过运营商提供的 2/3G 以及 Wi-Fi 网络能进行通信。程序启动时需要检查网络状态,运行过程中要实时监测网络状态,并对网络状态变化采取相应的措施。
下文将重点介绍主要模块的实现以及在这两个技术难点上的解决方案。
状态有三种,无网络连接、运营商网络连接和 Wi-Fi 连接。MKNetworkkit 中包含检测网络状态类 Reachability,检测方法如下:
a [Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable
b [Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable
a 为检查网络是否是 Wi-Fi 连接,b 为检查网络是否是运营商网络连接。
在系统运行过程中,网络状态可能会发生变化,
3 系统实现
3.1 网络模块
手机使用的网络有 2/3G 网络和 Wi-Fi,稳定性较差,网络模块需要确认网络环境,连接情况等信息。网络编程模块主要基于第三方开源网络工具包 MKNetworkkit[6] 来完成。MKNetworkkit 是一个完整的 iOS 网络编程代码库。使用开源网络工具包可以提高开发的效率,开发者不用关注底层的细节实现,专注于实现客户端功能。网络模块主要与服务器交互,提交用户请求,从服务器获取数据。
(1) 网络状态检查
客户端程序启动后先检查网络连接状态。网络
iOS 系统中,以通知的方式传递状态变化。通知是消息转发机制的一种模式,其中涉及到的对象有消息源,通知中心和观察者,当消息源检测到系统的某种变化后将产生消息,并将其传递给通知中心,然后通知中心再通过广播的方式通知一个或多个观察者,原理如图 2 所示。
系统中网络状态切换的消息通知名为“kNetworkReachabilityChangedNotification”。相关的程序模块在获取消息后,通过消息通知回调方法可以分析出网状态的变化,然后做出相应的反应。
(2) 网络请求
MKNetworkkit 发送网络请求获取服务器数据,主要包括两个类:MKNetworkEngine和MKNetwork-
51