NetworkExtension 简介

最后更新于:2018-11-11 21:19:48

Overview

NetworkExtension 是用来配置VPN通道的框架,定制和扩展核心网络功能。

Network Extension Hotspot Entitlements

从 iOS 9 以前 NetworkExtension 一直是属于苹果的私有框架,不允许开发者使用。iOS 9 以后苹果公开了这个框架,开发者可以使用这框架去实现 Wi-Fi 和 VPN 等相关功能。
但是如果你要使用 NEHotspotHelper 这个类的话,还是需要向苹果申请 Hotspot  Entitlements 。NEHotspotHelper 这个类主要是可以用来自定义Wi-Fi的子标题和自动填充 Wi-Fi 密码,实现类似 Wi-Fi 伴侣这类软件。不过苹果对这个审核比较严格,不太容易申请到。

Personal VPN (个人VPN)

NEVPNManager 这个类提供了 API 让  App 去创建和配置个人 VPN。

About Always-on VPN(始终打开 VPN)

Always-on VPN 简单的理解就是可以使得 iPhone或者 Mac 始终保持 VPN 连接。一般是企业用来监管公司内部设备,这个功能只能通过描述文件来安装,没有接口直接开启。

Network Tunneling Protocol Client(网络通道协议客户端)

你可以使用 NETunnelProvider 系列 API 将 iOS 和 MacOS 设备连接到使用非标准网络隧道协议(如 SSL-VPN)的 VPN 服务器。比如现在比较流行的 Shadowsocks 就是通过这个实现的。

NETunnelProvider API 使得应用能够实现自定义网络隧道协议(称为 Tunnel  Provider ) 的客户端。Tunnel Provider 作为 app extension(应用程序扩展)运行。主要包括以下几个类:

On-Device Network Content Filter(网络内容过滤)

NEFilterProvider API 使得应用能在 iOS 设备上动态地过滤网络内容。当学生在使用学校的设备上网时,应用可以使用以下几个类来保护学生:

Wi-Fi Hotspot Authentication and Configuration

NEHotspotConfiguration API 可以让应用去配置和连接某个 Wi-Fi。这个 API 与 NEHotspotHelper 实现的功能类似,但是又有一些区别。NEHotspotHelper 仅作用于当用户打开手机的 设置 - Wi-Fi 界面的时候,NEHotspotHelper 可以对手机扫描到 Wi-Fi 进行处理,比如给 Wi-Fi 填充密码和设置 Wi-Fi 的子标题。NEHotspotConfiguration 不能对 Wi-Fi 列表进行干预,只能给指定的一个 SSID 配置信息(账号和密码等)或者触发连接到指定的SSID。NEHotspotConfiguration 在 iOS 11 以上的设备可以使用,支持 WEP, WPA/WPA2 personal, WPA/WPA enterprise, and Hotspot 2.0 等类型的 Wi-Fi。NEHotspotHelper 在 iOS 8 以上可以使用,但是不支持 WPA/WPA enterprise 类型的 Wi-Fi。

Reference:

https://developer.apple.com/documentation/networkextension