老板不让用 AFNetworking,我该怎么办?

图片

一、引言

大数据分析最核心的是数据,我们不仅仅要做到采集数据,还需要把数据上传到指定的服务端。然后再经过服务端的存储、抽取、分析和展现,才能充分发挥数据真正的价值。

神策分析 iOS SDK 针对数据传输,从完整性、正确性以及高效性等多方面综合考虑,设计并实现了一套适用于数据采集的网络传输方案。

下面针对神策分析 iOS SDK 网络模块进行解析,希望能够给大家提供一些参考。

二、网络请求方案

iOS 中网络请求的实现有多种方式,例如:苹果官方提供的网络请求 API ;或者一些开源网络框架。下面分别介绍这两种方案的优缺点。

2.1 苹果官方 API

基于苹果官方 API 实现的网络请求一般使用 NSURLSession 或者 NSURLConnection 。但是,NSURLConnection 发送网络请求的相关接口在 iOS 9.0 开始已标记为过期。因此,开发者基本都加入了 NSURLSession 的阵营。下面我们看下 NSURLSession 有哪些优缺点。

基于 NSURLSession 实现网络请求方案具有以下优点[1]:

1. 基于连接的认证方案;

2. 支持 HTTP 请求配置;

3. 可私有化存储对象;

4. 支持后台上传下载。

但是,也存在以下缺点:

1. 没有一些开源网络框架的功能易用,例如:构建复杂的网络请求和响应的处理;

2. 部分细节没有封装,需要自己处理。

2.2 开源网络框架

基于开源网络框架实现网络请求方案具有以下优点:

1. 主流的开源网络框架功能丰富、相对稳定。例如:AFNetworking 等;

2. 可以方便快捷地实现网络请求的功能。

但是,也存在以下缺点:

1. 功能较多,代码逻辑复杂,学习成本较高;

2. 内部缺陷修复难度大甚至需要依赖作者来更新维护;

3. 包含很多可能使用不到的功能;

4. 引入开源网络框架后导致体积增大。

基于开源网络框架实现网络请求方案有利有弊,大家可以根据实际需求选择合适的方案。

三、SDK 网络模块

如果 SDK 网络模块基于开源网络框架实现,客户在集成 SDK 的同时也使用了同样的开源网络框架就会导致冲突。另外,维护开源网络框架会存在版本更新不及时、问题排查困难等风险。

由于基于开源网络框架存在这些弊端,SDK 网络模块采用 NSURLSession 的方式实现。

NSURLSession 是系统提供的网络访问 API,不仅可以满足 SDK 网络请求的需要,而且功能稳定、易拓展。

3.1 实现原理

NSURLSession 可以创建一个或者多个实例,每个实例协调一组相关的数据传输任务[1]。例如:在创建一个 Web 浏览器时,App 可能会为每个选项卡或者窗口创建一个会话。一个会话用于用户交互使用,另一个会话用于后台下载。在每个会话中,App 添加了一系列任务,每个任务都是表示对特定 URL 的请求。

3.2 具体实现

3.2.1. 网络相关配置

SDK 可以对数据发送进行一系列的配置,开发者可以根据具体需求设置相应的配置,从而达到高效的数据发送效果。

SDK 的相关配置在初始化时完成,可以配置的参数如下:

1. serverURL:数据发送地址,采集的数据会发送到该地址;

2. flushInterval:两次数据发送的最小时间间隔(单位毫秒),默认为 15000 毫秒;

3. flushBulkSize:两次数据发送的最小缓存条数,当本地缓存条数达到 flushBulkSize 时则会发送数据,默认为 100 条;

4. securityPolicy:SSL 证书和自签名证书的配置;

5. flushNetworkPolicy:数据发送时的网络策略。

3.2.2. 数据发送线程封装

SDK 数据发送是在子线程中完成的,当采集的数据满足发送策略时触发异步发送,上传任务会在 SAHTTPSession 类中完成。在初始化 SDK 时,创建 SAHTTPSession 实例,并实例化 NSOperationQueue 实现多线程发送事件。具体实现代码如下:

- (void)requestWithRecords:(NSArray<SAEventRecord *> *)records completion:(vo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值