Tag: 连接性

使用Alamofire快速检查互联网连接

我将medium.com视为一种将代码保存在远程位置的介质,以便可以从任何地方访问它。 这可能对别人没有帮助。 🙂 对于Swift 3+和Alamofire 4.4 ,我创建了一个名为Connectivity Swift类。 您可以使用Alamofire NetworkReachabilityManager类,并根据需要configure isConnectedToInternet()方法。 我只是在检查设备是否已连接到互联网。 import Foundation import Alamofire class Connectivity { class func isConnectedToInternet() ->Bool { return NetworkReachabilityManager()!.isReachable } } 用法: if Connectivity.isConnectedToInternet() { print(“Yes! internet is available.”) // do some tasks.. } 编辑:由于swift鼓励计算的属性,您可以更改上述函数,如: import Foundation import Alamofire class Connectivity { class var isConnectedToInternet:Bool { return NetworkReachabilityManager()!.isReachable […]

最大化iOS 11中的连接性

2017年8月24日 我们已经让您知道了要为iOS 11准备的事情,现在我们正在研究更具体的内容:即将到来的iOS更新将如何处理较差的网络连接。 外行用户只需要知道您使用的移动数据可能会比更新到iOS 11之前要多一些。但是对于我们的开发人员,我们将在下面深入探讨此主题。 戴上工程师帽! 在iOS 11中,Apple对URLSession系列API进行了许多改进。 这些改进从开发人员的生活质量更新到显着的性能提升,无疑将改善整个平台的用户体验。 在本文中,我们将特别介绍两项改进:URLSession内置的多路径TCP支持和可达性监视。 多路径TCP 优雅地处理恶劣的网络条件是应用程序精心打造和完善的必然标志。 与手机上的其他大多数应用程序相比,您是否注意到Siri似乎很少有连接问题吗? 原因是多路径TCP。 当Siri发出网络请求时,该应用实际上打开了与服务器的两个连接:一个通过Wi-Fi,一个通过蜂窝。 这些连接一起工作,可以尽快将数据传送到应用程序。 只要您的设备在两个通道之一上都具有良好的连接,Siri就可以正常工作。 多路径TCP是一种相对较新的协议,专门为移动设备设计。 它建立在TCP之上,因此可以从TCP内置的可靠性和拥塞控制中受益。 此外,MPTCP允许在无线和蜂窝连接之间无缝切换。 它甚至支持同时使用两个连接以提高吞吐量(稍后会对此进行更多介绍)。 为了利用MPTCP,在客户端和服务器级别都需要支持。 当前,并非所有服务器基础架构都支持MPTCP,但像AWS这样的流行供应商都支持。 使用iOS 11,应用程序开发人员现在也可以在客户端级别支持MPTCP。 模式 在iOS 11中,应用程序可以选择三种不同的MPTCP模式:切换模式,交互模式和聚合模式 切换模式:如果可能,将通过Wi-Fi建立连接。 如果Wi-Fi网络条件不佳,系统将自动启动蜂窝链路并将流量传输到该链路。 随着Wi-Fi条件的改善,流量将被转移回Wi-Fi连接,并且蜂窝链路将被拆除。 本质上,切换模式试图在保持可接受性能的同时最小化蜂窝使用。 所有这些都发生在URLSession中,并且对我们的应用程序完全透明。 交互模式:系统将立即启动Wi-Fi和蜂窝链接。 尽管仍然首选Wi-Fi,但如果发现Wi-Fi条件不理想,该系统将积极过渡到蜂窝网络。 交互模式针对性能进行了优化,但以蜂窝数据的使用为代价。 Siri使用交互模式。 聚合模式:与交互模式一样,系统将立即启动两个链接。 但是, 两个链接将一起使用以增加网络的整体吞吐量。 理论上,在10mbps Wi-Fi连接和5mbps蜂窝网络上使用聚合模式可能会导致与服务器的15mbps连接! 虽然这很酷,但会导致大量的蜂窝数据使用。 因此,Apple不允许在生产应用程序中运行聚合模式。 但是,开发人员可以通过“设置”应用中的“开发人员设置”屏幕使用汇总模式。 无论使用哪种模式,如果您的应用达到了Wi-Fi辅助数据限制,蜂窝链接将被禁用。 如果要测试应用程序,请注意这一点,并注意MPTCP不再切换到蜂窝网络。 这很好地表明您可能需要重新考虑哪些呼叫选择了加入MPTCP。 选择加入 那么,您如何选择加入? 苹果公司做到了这一点非常容易。 只需在Xcode中向您的应用程序添加“ multipath”功能,然后将URLSessionConfiguration上的multipathServiceType属性设置为.handover或.interactive。 而已! 可达性 […]