class YSNetManager: MoyaProvider <YSNetTargetType> {
static let sharedInstance: YSNetManager = YSNetManager()
init() {
// 过滤证书,指定域名
// DefaultTrustEvaluator 默认策略,只有合法证书才能通过验证
// RevocationTrustEvaluator 对注销证书做的一种额外设置
// PinnedCertificatesTrustEvaluator 证书验证模式,代表客户端会将服务器返回的证书和本地保存的证书中的 所有内容 全部进行校验,如果正确,才继续执行。
// PublicKeysTrustEvaluator 公钥验证模式,代表客户端会将服务器返回的证书和本地保存的证书中的
// DisabledTrustEvalutor 该选项下验证一直都是通过的,无条件信任。
// CompositeTrustEvalutor 自定义验证,需要返回一个布尔类型的结果
let serverTrustManager = ServerTrustManager(allHostsMustBeEvaluated: false,
evaluators: ["xx.xx.xx": DisabledTrustEvaluator()])
let configuration = URLSessionConfiguration.default
configuration.headers = .default
let session = Session(configuration: configuration,
startRequestsImmediately: false,
serverTrustManager: serverTrustManager)
// 设置最大请求数量
session.session.configuration.httpMaximumConnectionsPerHost = 10
// 开启 MPTCP,允许在一条 TCP 链路中建立多个子通道,因此 MPTCP 可以让用户在切换网络环境的时候,不需要重新建立 TCP 链接;
// none :不启用,默认选项
// handover :优先考虑的是链接的可靠性。只有在 Wi-Fi 信号不好的时候,才会走 Cellular
// interactive :优先考虑的是链接的低延时。系统会看 Wi-Fi 快还是 Cellular 快。如果 Cellular 比 Wi-Fi 快,哪怕此时 Wi-Fi 信号很好,系统也会把流量切到 Cellular 链路
// aggregate :在这种模式下,Wi-Fi 和 Cellular 会同时起作用。如果 Wi-Fi 是 1G 带宽,Cellular 也是 1G 带宽,那么你的设备就能享受 2G 带宽(只能在开发者模式下使用)
session.session.configuration.multipathServiceType = .handover
super.init(session: session,
plugins: [YSNetPlugin()])
}
}
但是一般情况下不建议将 HTTPS 证书验证关闭
网友评论