风暴俱乐部|带来哪些启发?,WWDC:无线网络优化实践( 三 )


对业务的侵入性:业务必须修改现有网络连接的阶段的代码;交互的标准兼容性不足:IP直连下的302问题、Cookie问题、SNI问题等带来的变化一是在应用内部 , 我们可以对业务透明提供提供全局的域名调度或者域名兜底解析能力,不再是只有用到特定组件或SDK才可以 。 二是苹果放开系统级别DNS接管后 , 用户设备上的服务相比原LocalDNS的“中立性”如何管控?对特定业务是否甚至会造成恶化?如果对外部应用的这种“中立性”疑问或担心确实存在 , 则这种系统标准化的加密DNS对手淘这种大型应用则是必选项 。
受限网络中推送?解决什么问题当向iOS设备推送消息时 , 业务服务器需要将消息先发送给APNS服务器 , APNS服务器再将消息转换为通知payload推送给目标设备 。 如果设备所在的WiFi网络没有连接互联网或者当前网络受限 , 比如在游艇、医院、野营地这些地方 , 设备没有与APNS服务器建立有效连接 , APNS消息投递将会失败 。
?如何实现本地推送连接对那些推送功能非常重要 , 而设备所在网络受限的场景非常适合 。 而对于常规的推送需求 , 依然推荐使用PushKit或UserNotificationAPI处理APNS推送消息 。 每台设备和APNS服务器之间只建立一条APNS连接 , 设备上所有App都公用这一条连接 , 所以APNS非常省电 。
APNS与本地推送连接对比:
AppExtension主要处理两类推送 , 一类是常规的推送通知 , 一类是VoIP呼叫通知 。 如果是常规的推送通知 , AppExtension收到消息后 , 可以使用UserNotificationAPI构造一个本地推送显示推送信息 。 如果是VoIP呼叫通知 , AppExtension使用NEAppPushProvider类将呼叫信息报告给系统 。 如果此时主App不在运行 , 系统将唤醒主App , 并将消息投递给它 , 最后主App再使用CallKitAPI显示呼叫界面 。
?价值场景如果只考虑推送本身 , 对于手淘或者大部分消费类应用来说 , 笔者认为价值并不大 , 因为此类APP不可能在一个封闭的本地网络里去部署资源来提供服务能力 。 这里一个可应用的点在于:设备一旦进入特定网络环境 , 触发AppExtension,进而唤起主App , 应用可在后台完成一定事务 。 因为iOSApp一直缺乏后台服务能力 , 这种特定网络环境的触发唤醒 , 极大的补充了这一能力 。
现代网络技术的应用苹果在这次WWDC中 , 把一些较新的网络技术 , 对应用的体验提升 , 做了一个简单综述 , 包括IPv6、HTTP/2、TLS1.3,MTCP、以及HTTP/3 。 这些技术在手淘基本都有涉及 , 有些是已经是大规模部署、有些是正在逐步推进中 。 对各个应用来说 , 如果已经在应用这些技术了 , 则云端均尽可能标准化 , 便于进一步推广和复用 。 这里简单的对苹果的综述做一个搬运:
?IPv6苹果根据最新统计 , 苹果全球设备TCP连接占比中 , IPv6占比26% , IPv4占比74% , 其中74%的占比中有20%是因为服务端没有开启IPv6支持 。 在建连时间方面 , 由于减少了NAT使用 , 提高了路由效率 , IPv6的建连时间比IPv4快1.4倍 。 开发者只需使用URLSession和Network.frameworkAPI , IPv6网络适配将自动支持 。