# 数据与网络

语言：zh-CN
原文：[数据与网络](<https://allluckly.cn/journal/topics/data-network/>)
中文：[中文 HTML](<https://allluckly.cn/journal/topics/data-network/>)
English: [English HTML](<https://allluckly.cn/en/journal/topics/data-network/>)

DEVELOPMENT NOTES · 24 篇

从本地数据到远端消息，这些笔记记录了持久化、请求封装、推送和即时通讯的实现思路。阅读时先分清数据属于哪一层，再看每段代码负责什么。

## 怎么读这一组

1. 本地数据可以从 Core Data、归档与缓存读起，分别留意保存格式、更新时机和失效策略；它们解决的并不是同一种问题。
2. 网络部分可先看 NSURLSession 和请求架构，再读 CocoaAsyncSocket 的连接流程，沿着发起、回调、失败和重试梳理状态。
3. 推送、通讯录、地图、支付等接入记录受系统权限和第三方服务变化影响较大。理解历史流程后，应另查服务方当前文档。

这是 2015–2017 年的历史记录，示例未在本次整理中重新运行验证。先核对文章日期和版本说明，再决定哪些思路适合当前项目。

## 主题文章

24 篇 · 新到旧

- 2017-05-03 

  ### [iOS开发之DNS劫持](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao75>)

  从域名解析异常引出 DNS 劫持问题，介绍通过 NSURLProtocol 调整请求和解析流程，并讨论 IPv6、WebKit 与 NSURLSession 的适配边界，保留相关实现与参考资料。

  SindriLin DNS · NSURLProtocol · IPv6
- 2017-03-09 

  ### [iOS即时通讯进阶之CocoaAsyncSocket源码解析(Connect终)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao72>)

  继续追踪 CocoaAsyncSocket 的连接过程，从本机地址绑定走向连接建立与后续回调，结合底层 Socket 操作解释异步连接的执行顺序及相关配置的作用。

  涂耀辉 CocoaAsyncSocket · GCDAsyncSocket · bind
- 2017-02-17 

  ### [iOS即时通讯进阶 - CocoaAsyncSocket源码解析(Connect篇)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao71>)

  沿 GCDAsyncSocket 初始化与连接入口阅读 CocoaAsyncSocket 源码，依次梳理参数检查、本机与服务端地址创建、Socket 配置等连接前准备工作，配合注释说明调用关系。

  涂耀辉 CocoaAsyncSocket · GCDAsyncSocket · Socket
- 2016-10-12 

  ### [iOS开发之iOS10推送必看(高阶2)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao65>)

  介绍 Notification Service Extension 在通知展示前处理内容的流程，说明创建扩展目标、修改文字和加载附件的方式，以及处理超时后回退原始通知的行为。

  徐不同 UNNotificationServiceExtension · 通知附件 · 远程通知
- 2016-09-28 

  ### [iOS开发之iOS10推送必看(高阶1)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao63>)

  通过创建本地通知说明 UNNotificationRequest、触发器和通知中心的关系，利用 identifier 管理添加、更新和删除，并介绍附件所需的有效文件路径与配置。

  徐不同 UNNotificationRequest · UNUserNotificationCenter · 本地通知
- 2016-09-27 

  ### [iOS开发之iOS10推送必看(基础篇)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tougao62>)

  从现有工程开启推送能力与检查环境配置入手，介绍 iOS 10 通知注册、中心代理和回调处理，再结合第三方推送解释旧代码迁移时需要关注的接口变化。

  徐不同 iOS 10 · UserNotifications · 推送注册
- 2016-06-02 

  ### [iOS开发之封装一个自动归、解档的类](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao48>)

  从 NSCoding 的归档与解档入手，利用运行时遍历对象成员变量并组织编码，逐步封装 WZXArchiver，讨论包含子对象时的处理方式及自动化存储的限制。

  WzxJiang NSCoding · WZXArchiver · 对象归档
- 2016-05-09 

  ### [iOS开发之Swift初体验PhotoKit](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao44>)

  以照片多选组件介绍 PhotoKit 的基本使用，说明最大选择数量、PHAsset 数组回传和闭包调用方式，并提供相册项目及学习资料，记录从 AssetsLibrary 迁移的尝试。

  大石头布 PhotoKit · PHAsset · 照片多选
- 2016-04-26 

  ### [谈谈MVVM和链式网络请求架构](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao41>)

  从控制器业务代码膨胀出发，用登录判断展示 Model、ViewModel 与 ViewController 的职责拆分，再介绍 ReactiveCocoa 和链式网络请求封装如何组织业务调用。

  WzxJiang MVVM · ReactiveCocoa · ViewModel
- 2016-03-30 

  ### [iOS开发之AES+Base64数据混合加密与解密](<https://allluckly.cn/aes/AES>)

  分别为 NSData 和 NSString 编写分类，展示 AES 加解密与 Base64 编码组合的调用流程，并强调客户端和后台需要约定一致的密钥，附完整演示项目。

  Bison AES · Base64 · CommonCrypto
- 2016-03-16 

  ### [一步一步带你封装一个Swift本地缓存库](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao32>)

  先区分 Documents、Caches、Preferences 与临时目录，再封装按类型保存对象、图片和语音的本地文件缓存，结合离线浏览场景说明目录管理和缓存读写思路。

  大石头布 Swift · 文件缓存 · 应用沙盒
- 2016-03-14 

  ### [iOS开发仿微信(WeChat)系列(六)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao30>)

  记录仿微信聊天功能接入后的三个问题：同步键盘动画参数、处理应用进出后台时的观察者，以及保存登录状态。文章展示当时的处理代码并注明自动登录示例的简化范围。

  WzxJiang 键盘通知 · 即时通信 · 应用生命周期
- 2016-03-03 

  ### [史上最全远程推送详解之极光推送](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao28>)

  按 App ID、推送能力与证书申请顺序准备远程通知，再接入极光推送 SDK，说明开发和生产配置、证书导出及客户端回调代码，记录早期推送接入流程。

  WzxJiang APNs · 极光推送 · 推送证书
- 2016-02-14 

  ### [iOS开发仿微信(WeChat)系列(五)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao18>)

  继续仿微信的个人资料与朋友圈界面，使用 AVUser 简化注册登录、AVFile 上传头像，并通过压缩图片减少传输量，同时记录下拉头图与刷新组件的实现问题。

  WzxJiang AVUser · AVFile · 头像上传
- 2016-02-03 

  ### [iOS开发仿微信(WeChat)系列(四)](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao16>)

  仿微信项目开始接入云端存储与即时通信依赖，封装登录和注册方法，并记录查询用户数据时的排错过程。正文包含早期密码字段试验，适合作为历史开发记录。

  WzxJiang 仿微信 · 云端存储 · 用户登录
- 2016-01-25 

  ### [也许你根本不需要Alamofire,何不尝试下NSURLSession?](<https://allluckly.cn/%E6%8A%95%E7%A8%BF/tuogao10>)

  从最简单的数据请求开始介绍 NSURLSession，区分数据、下载和上传任务，并比较默认、临时与后台配置，说明缓存、Cookie 和网络任务组织之间的关系。

  大石头布 NSURLSession · NSURLSessionConfiguration · 下载任务
- 2016-01-20 

  ### [iOS开发之详解连连支付集成](<https://allluckly.cn/ios%E6%94%AF%E4%BB%98/lianlianzhifu>)

  整理连连支付 SDK 接入时的链接参数、资源样式和业务字段，说明用户编号、绑卡协议与服务端回调的含义，并记录签名、界面定制等容易混淆的配置点。

  Bison 连连支付 · 支付SDK · 服务端签名
- 2016-01-10 

  ### [详解持久化Core Data框架的原理以及使用](<https://allluckly.cn/%E6%8C%81%E4%B9%85%E5%8C%96/chijiuhua01>)

  从托管对象、上下文和持久化协调器的关系讲起，手动搭建 Core Data 环境与实体模型，再通过新增、查询、修改和删除示例说明数据保存的主要流程。

  Bison Core Data · NSManagedObjectContext · 实体模型
- 2016-01-04 

  ### [Github源码推荐:(01.04):iOS开发蓝牙,启动动画,自定义Tabbar](<https://allluckly.cn/%E6%BA%90%E7%A0%81%E6%8E%A8%E8%8D%90/yuanma02>)

  选编 BabyBluetooth 蓝牙框架、CLClipImageView 启动动画和 CYLTabBarController 标签栏，提供项目入口及部分用法，并区分蓝牙中心与外设两种工作模式。

  Bison BabyBluetooth · CoreBluetooth · CLClipImageView
- 2015-12-07 

  ### [iOS开发之OCR光学识别储蓄卡以及信用卡](<https://allluckly.cn/ocr/back>)

  围绕扫描卡号的需求介绍 card.io SDK 的导入、链接参数、代理设置和识别回调，并给出 Objective-C 与 Swift 示例；正文说明此次选用的是信用卡识别方案。

  Bison card.io · OCR · 信用卡识别
- 2015-11-09 

  ### [Swift2.0后Alamofire的使用方法](<https://allluckly.cn/swift/Alamofire>)

  展示 Swift 2.0 环境下手动导入 Alamofire、配置项目依赖并发起网络请求的步骤，配合截图说明工程链接位置，适合回顾早期框架接入和调用方式。

  Bison Swift 2.0 · Alamofire · 网络请求
- 2015-10-21 

  ### [Bison教你3分钟集成支付宝好友分享](<https://allluckly.cn/%E6%94%AF%E4%BB%98%E5%AE%9D/ZFB>)

  按应用注册、SDK 导入、URL Scheme 配置与回调处理介绍支付宝好友分享，区分文本、图片和网页消息的数据对象，并记录安装检测及鉴权失败的排查点。

  Bison 支付宝分享 · SocialSDK · URL Scheme
- 2015-09-23 

  ### [一点一滴慢慢的揭开XMPP的神秘面纱](<https://allluckly.cn/ios%E4%B9%8Bxmpp/%E4%B8%80%E7%82%B9%E4%B8%80%E6%BB%B4%E6%85%A2%E6%85%A2%E7%9A%84%E6%8F%AD%E5%BC%80XMPP%E7%9A%84%E7%A5%9E%E7%A7%98%E9%9D%A2%E7%BA%B1>)

  记录 XMPP 聊天接入的初步流程，包括导入依赖、使用用户信息连接 Openfire、处理注册与登录验证，以及消息收发相关回调，提供客户端集成代码。

  Bison XMPP · Openfire · 即时通信
- 2015-06-16 

  ### [iOS开发获取通讯录并发短信给联系人](<https://allluckly.cn/%E9%80%9A%E8%AE%AF%E5%BD%95/%E8%8E%B7%E5%8F%96%E9%80%9A%E8%AE%AF%E5%BD%95%E5%B9%B6%E5%8F%91%E7%9F%AD%E4%BF%A1%E7%BB%99%E8%81%94%E7%B3%BB%E4%BA%BA>)

  围绕邀请好友的需求，介绍读取手机联系人并调起短信发送的简单封装，列出 AddressBook、AddressBookUI 与 MessageUI 依赖，并提供 LBContacts 示例工程。

  Bison 通讯录 · AddressBook · MessageUI

